Handle errors gracefully

- Add Error and a bunch of subclasses that are used to record different
  errors
- Add Arguments class as wrapper around arguments and errors
- Update parseArguments()
  - return Arguments instead of a sequence of individual arguments
  - create and record Error objects instead of using assertions
- Update test code

Note that error subclasses will be added and removed before the initial
release. For instance, once we support short parameters like `-n10`,
ParameterInShorthandListError will be removed (because then the rest of
the shorthand arguments will be parsed as the argument instead).

The error messages are mostly modeled after grep.
Support shorthand parameters, e. g. `-n10`

Also removes ParameterInShorthandListError because it can no longer
occur – if a parameter appears in a shorthand list, it is now instead
interpreted to take the rest of the “shorthands” as argument.
Add test for new shorthand parameter parsing