Updating gems and refactoring

@pushmatrix and @redronin please review.

Did some minor refactoring that breaks up the logic a little bit.

# Notable Changes

* added pessimistic versioning for existing gem dependencies
* upgraded all dependencies to current version
* added development dependencies including haml so all tests are run
* updated the tests to use minitest instead of test unit
* simplified the binary file to just call the CLI class in lib
* added simplecov to measure test coverage
* light refactoring for better test coverage