Make UnknownFieldSetImpl Externalizable

* also fix some generic collections issues
Tiny optimisation: Use Class.isEnum() instead of Enum.class.isAssignableFrom( )
ISPN-5094 Deprecate org.infinispan.protostream.Message interface and introduce a more sensible way of handling unknown fields
ISPN-4359 Provide an annotation driven way of declaring protobuf metadata