Propagate the key-path of any errors out to the end-user in the user info dictionary.

This enhancement seems to work well. I think the code in __transform may need to be refactored at some point - it's not 100% clear whose responsibility it is to propagate the property name in the key-path of the error (should it be done in __transform or initWithDictionary)?

Added checks to existing test-cases to make sure the key-path of the error is as expected. However, I looked through the tests and not very many of them check that the right errors are being set - those that do tend to be at the root-level (so therefore no key-path to validate). The library could use a few more test-cases with deeply nested errors.