Expose FileDescriptor and FieldDescriptor

To be able to deserialize the DynamicProto messages created by this class, need access to the original File and FieldDescriptors used to generate messages. This change exposes them, along with including some compiler warning fixes and tests.