Validation

Depends on #10 

This adds `validate` which compares a schema against an aeson value and collects errors for all branches.

If we validate `{ "foo" : { "bar" : 3 } }` against the (pseudocode) schema `Object { foo : Object { bar : String }, baz : Number }`, we get (pseudo) `[Mismatch ["foo","bar"] String 3, MissingRequiredField "baz"]`. It works with arbitrary nesting giving you the most specific errors possible.

Some things I want to add:

* More tests, i'm testing it by validating the test cases (encoding a value and validating it against it schema should always work if the schema is valid). Also need tests for the error messages.
* `decodeWithSchema :: FromJSON a => ByteString -> Either (Either SchemaError AesonError) a` that first just calls `eitherDecodeV`, if that fails validates the schema and returns those errors if they occur, and as a last fallback returns the aeson error. Should give much better error messages if the input is valid json. Integrating this into rest would be super cool!
* Pretty printing of errors