Treat negative numbers, dashes, and arguments with spaces as values

Why is it a good idea?
- `-` is a special argument across multiple Unix commands which stands for stdout (`echo hello |cat - /another/file`);
- negative numbers are not usually expected to behave as options, but rather as values, this is also sort of a standard (`echo -e 'hello\nworld' |head -1`);
- I doubt there exists a single program which defines an option with spaces in it.

This patch is a superset of #38.