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

Is the role of the `toMarshal` boolean to basically prevent a null map from being marshalled and indexed? What happens when you actually pass something empty in? What does ES do? I believe in the original behavior, since the type of the field was `map[string]interface{}` it would default to the "zero value" for that type, which is just an empty map.. so `json.Marshal` would likely produce `{}`. I think if a `nil` is passed in (the equivalent of `toMarshal == false` in this current implementation`, we should just pass in an empty map.