Elastic Mill v1 WIP — code review and comments welcome

Work in progress for Elastic Mill version 1.

Elastic Mill is a basic HTTP proxy for Elasticsearch. It intercepts updates and combines them into batches, and proxies everything else. This lets applications naively parallelize for performance benefits, and still update Elasticsearch in efficient batches, without having to worry about the implementation details of queueing and batching.

This is my first real public open source Go project, so comments and feedback are very welcome.

### TODO for v1

- [x] simply proxy read requests
- [x] intercept individual document updates and format them for the Bulk API
- [x] pull updates off of a channel into reasonable batches
- [x] process cluster bulk requests
- [ ] process index bulk requests (index name may be implicit in the URL)
- [ ] process type bulk requests (index and type names may be implicit)
- [x] actually send batches of updates to Elasticsearch
- [ ] gracefully retry failed updates
- [x] respond to intercepted requests with a nice HTTP 202
- [ ] general Golang and design sanity check
- [ ] socket sanity check — am I leaking anywhere?
- [ ] more unit-ish testing
- [ ] heavier duty benchmarking — how and where does it break?
- [ ] am I proxying the Basic Auth credentials? probably ought to if not.

#### TODO for some other version, or not at all

- [ ] more robust queue implementation? pull requests accepted, I'm content with this being a best-effort convenience sort of tool.