Refactor/refactor classes

Large Refactor of this library. Split classes/modules out into their own seperate file structure
Small bits of cleanup for obviously wrong behaviour
Added lots of tests (now 681 SPECS and counting)
Fixed rake tasks to do rspec and simplecov correctly

Still TODO:
Add more test coverage
Add and clenaup YARD documentation
Add YARD rake task
refactor a few more wonky things once test coverage is in place