Flexible feed

Flexible responses

Rack::Icelastic middleware and Icelastic::Client
Added dependency injection of response writers, previously hard coded

JSON / ResponseWriter::Feed
* Allows a block to be passed to #build 
* Atom/OpenSearch-modeled feed #links - trigger with format=json&variant=atom 
* JSON Array (format=json&variant=array)

Added [JSON HAL](http://stateless.co/hal_specification.html) (Hypertext Application Language) ResponseWriter::HAL

Example of injecting a custom [CDL](https://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#CDL-Syntax) response writer

```ruby
writers = Icelastic::Default.writers 
writers << My::ElasticsearchCDLWriter

use ::Rack::Icelastic, {
  :url => "http://localhost:9200",
  :index => "oceanography",
  :type => "point",
  :writers => writers
}
```
See ResponseWriter::HAL for how to define format and media type for custom response writers.