Implement error handling for invalid arguments

Alter handling of invalid arguments - again. I feel it's cleaner.

- constant VALID_ARGS hash allows flag implementation alteration more easily
- exiting after errors raises failure exit status
- leverage output_error in more places
- fixes #3 (well main point anyway, doesn't address your suggestions)

In changing how the internal flags were handled I did away with the single use instance variables. Please confirm that I've understood --files correctly.