Update error messages, add error types

I've rewritten all the error messages to be more plain English, but also made errors more useful to machines by giving them all `Symbol`ic types. This makes it super easy to choose how to deal with schema violations using `case`s.

Not backwards compatible, so might need a version bump to 0.3.0.
Can we change this message to "Expected to find a nested schema, but found #{FRIENDLY_TYPES[data.class]} instead." or something to that tune? I think that the "schema not found" error sounds a little too much like a dereferencing problem.