Major internal rewrite

Make parser, commands and groups conceptually consistent.
This introduces small API breakage, but only on API that is
rarely used. This also privatizes some of the previously
public fields and functions that were not supposed to be public.
Added some short flag tests
Added error type to string
Move short_test to flags_test package
Fix order of assert reporting
Added short flag tests for various value specs
Move unknown_test to flags_test package
Do not print errors in tests
Fix expected error for short tests
Fix parsing logic of short options
Make sure to return error when parsing short option
Fix test for error in failing short tests
Move ini related things to separate parser
Make TIOCGWINSZ a private const
Run go fmt
Use platform style option delimiters
Fixed removal of ( in windows optstyle
Fix printing of short opt delimiter rune
Make short option optional values behave like getopt
Added documentation for Command type