Implementation for #17

Implements #17 - changes setup API to give overloads for just registering short and long options.

Setup<T>(char shortOption)
Setup<T>(string longOption)
Setup<T>(char shortOption, string longOption)

Some tests (e.g. null/empty short option) no longer required. Added tests
to prevent short option names of ':' and '='.

Internally we still use strings.