Breaking changes

Ignore some of the crazy in this PR (the tree got messed up b/c of testing and pulling repos) but this is essentially a refactor to modularize the code in this module and make each piece more testable.  Not currently a lot of extra features, and there are some breaking API changes, but putting it here to look at.  The sails website is pointed to use this fork for the time being