Complete rewrite of Hippy

Static interface was driving me nuts and wasn't making use of Composer.

It's now a lot more flexible and testable. For the time being I've dropped the static interface, but this can easily be added back in as a wrapper around the core classes.