Made validation sub errors indicate where they come from

When using anyof or allof in a schema, all of the validation errors for
all of the subschemas are shown in a flat list - all concatenated
together. This makes it very hard (or impossible) to see where in the
schema individual errors come from, and makes it hard to debug the
errors in your json.

This change groups subschema errors together, according to which schema
they appeared under.
Made subschema errors use the attribute type in their key

Feels more general, and easier to understand
Added tests around subschema error messages
Merge pull request #138 from iainbeeston/better_sub_errors

Made validation sub errors indicate where they come from