This patch introduces a `UserError` class and replaces many uses of
`error.Abort` by it in `commands` and `cmdutil`. This is a part of
https://www.mercurial-scm.org/wiki/ErrorCategoriesPlan. There will
later be a different class for state errors (to raise e.g. when
there's an unfinished operation). It's not always clear when one
should report a user error and when it should be a state error. We can
always adjust later if I got something wrong in this patch (but feel
free to point out any you notice now).