Fixes #4047 - Empty objects are not stored in _source when an include/ex...

...clude list is present

Closes #4047 

This was originally being tracked by pull request #4048.  I closed that pull request because it was sloppy.

I am uncertain about the behavior for handling includes/excludes with empty objects and wildcards, so I added tests to cover the following cases, but please let me know if you think the results are incorrect...

Given
```
{
  "object1": { },
  "object2": { }
}
```

And a mapping
```
{
  ...
  {
    "_source" : {
      "excludes": "object1.*,
      "includes": "object2.*"
    }
  }
}
```

Results in a filtered source of
```
{
  "object1": { },
}
```

However, if given
```
{
  "object1": {
    "key1": "value1"
   },
  "object2": {
    "key2": "value2"
  }
}
```

and the same mapping, the filtered source would be
```
{
  "object2": {
    "key2": "value2"
  }
}
```