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 
The type parameter is used in a few other places, including the nested mapping. My thinking was that it's the DocumentMapperParser that actually parses the type (since it uses it to work out the correct type parser to use, so it should remove it. Otherwise, every implementation of the Tye Mapprs would need to remove it themselves since if its not removed from the map, the map won't be empty and we will throw an exception saying 'type' has not been parsed.

Hope that makes sense?