This PR brings the default behaviour of the elasticsearch sink in sync with serilog's conservative choice to ToString() unknown objects instead of trying to serialize them.

* Sink now uses a subclass of Json/JsonFormatter.cs, instead of forcing the data into our own LogEvent and relying on ElasticSearchPropertyFormatter to flatten serilogs data structure. We now hook into serilogs preferred serialization routine.
* Had to add some hooks so that the subclass could override property names.
* If you provide the elasticsearch sink with an IElasticsearchSerializer instead of ToString()-ing unknown objects the sink will serialize them as json objects allowing events to be filtered/aggregated more granular. For now this only applies to exceptions since objects are flattened to serilog data structures before they are sent to sinks.
* This allows you to optionally take a dependency on `Elasticsearch.Net.JsonNET`.
* Added unit tests for the elasticsearch sink.
* Added an .editorconfig file to force files to use an indentation of 4 spaces
* The events were always written to an index formatted DateTime.UtcNow, but the event timestamp should be leading what index the event has to go into.
Cleaned up tests, included the ability to override the typename as per #284, Cleaned up classes and changed ElasticSearch to Elasticsearch where possible, Obseleted methods that do not take ElasticsearchSinkOptions
Added the option to inline fields (write them at the root of the document) as per #234