Convention-based type resolver for Data Contract serializer

Resolves #94.
I usually throw either `InvalidOperationException` or `ArgumentException`. What would you prefer?