Pretty formatter spec

A different solution to #201 Driven using spec files instead.

As well, I made some changes to the solution to #175 I made the Options behave fully like a hash instead. It made it significantly more complicated to test when I simply exposed the methods. Having it behave as a hash, makes it much much easier to inject logic for whatever I want wherever I want. As well, I wouldn't be able to pass in a simple hash for any formatter that includes `Console`