Added stuff and make things extensible.

Added IFormatter interface. All formats should be based on it, see CSVFormatter for an example.
Added SubCommandHandler. It's a little thing I cooked up to make sub-commands clean and clear and under control.

It's a good thing I actually ran it before PR'ing. Quite a few bugs were smashed this day.