Updated ModelValidationResult and ModelValidationError

Instead of errors being represented by a simple
IList<ModelValidationError> structure, it is not stored in an
IDictionary<string, IList<ModelValidationError>> structure. The key is the
name of the property that the error represents.

The error message formatter has also been updated from Func<string,
string> to Func<IEnumerable<string>, string> since MemberNames can contain
multiple values

Last, the ModelValidationError can now implicitly be cast to a string