Handle DataContract annotation in enum types

When an enum type has a [DataContract] annotation, use the specified
values from the EnumMember annotations when reading/writing Json and
JSV.
See  #337.

You might want the helper methods structured differently.
You might also want different exception behaviour. I aimed for throwing when the Xml serializer throws, but I don't throw the same exceptions.