Mappers: Better validation of mapping JSON

The parsers for the mappers now remove each setting as they parse it and an error will be thrown if any settings are left after parsing is complete

Closes #7205 
Only `_field_names` actually builds the content type and I wonder if it would not be better to remove the `"type"` parameter in `_field_names` parser instead of doing it here for all root mappers. Else it might look like you can define a type for different root mappers:

```
PUT testidx
{
  "mappings": {
    "doc": {
      "_analyzer": {
        "type": "geo_point"
      }
    }
  }
}
```