Test buffering appender

This PR mostly contains tests but also important changes to the appender:-
* Appender calls base.ActiveOptions which initialises the BufferingAppender
* Appender calls base.OnClose which flushes the buffer
* Added OnCloseTimeout property to control how long to wait to send final messages during OnClose
* JavaScriptSerializer is no-longer a field of the Repository as it isn't thread-safe
* Appender has consistent error handling
* Defensive coding for null properties

Note, although I've updated the sample app.config file, I haven't updated the readme file [or any wiki pages].  I think we [you] should document the async behaviour/configuration options.  
* BufferSize is the number of events that need to be logged before a call to ElasticSearch
* Lossy can be set to true to make the appender behave like a ring buffer
* Buffer is flushed when Evaluator evaluates to true
* Supported evaluate trigger on time, level or exceptions
* Calls to ElasticSearch happen on a different thread; calling thread isn't affected
* The ThreadPool is used to ensure there are threads available
* All errors are logged to the Appender's ErrorHandler
* Log entries that haven't been logged are flushed when the appender closes
* OnCloseTimeout used to control how long to wait.  Default is 30000 ms