Added support for phake when running cli operations
Refactored the validator for better integration with namespacing.

Each key in the validation schema has a corresponding Constraint class to deal with it. The 'type' constraint uses Datatypes to validate the different versions of data passed to it.