Multi Field Mapping via Attributes
Allows for multiple attributes per property and writes them as a CURL command for sending mapping to ElasticSearch
Setup ElasticPropertyAttribute to allow multiple attributes and created new MultiFieldProperyName to name each multi-field so ES can use by name
Updated PropertyNameResolver.Property() to be an IEnumerable<> list as opposed to a single IElasticPropertyAttribute (updated associated references to first check if null then if item(s) exist. this was decided to be better than returning an empty list for memory reasons since most properties might not have any attributes)
TypeMappingWriter checks for multiple attributes. If a single attribute is available, it outputs the mapping like normal, otherwise the method loops through all attributes and defines as a multi_field.
TypeMappingWriter also now abstracts the core writing logic into its method for reuse between single attribute and multiple attributes.