Support for passing a struct to a document instead of map[string]interface{}

I have added a field Data to avoid the breaking change of modifying the type of Fields in Document. Basically, if Fields has a value then that is what it will be used. If not, the content of Data will be checked, and the fields from that struct extracted, and copied into the Fields struct.

Added a test too to verify this works as expected.