Make UnknownFieldSetImpl Externalizable

* also fix some generic collections issues
Tiny optimisation: Use Class.isEnum() instead of Enum.class.isAssignableFrom( )
ISPN-4359 Provide an annotation driven way of declaring protobuf metadata