Tons improvements across the board

This is an extension of work done in #4 by @abangratz.

Biggest improvements are encapsulation of CLI logic (prevents parser from kicking in when this library's code was loaded in a Rails app, for instance) and reduction of memory gained by not reading all files from disk and not having to preload all tags in memory.

Formatters code is also rewritten for easier reading/changing/testing. More tests to come if you like the direction where this is going.

/cc @tmm1 @lzap, closes #9