Fast bulk loading

Support bulk loading by reading a stream of indexing commands and data via standard input.

Indexing operations are split into packets of about 1MB in size and sent to elastic search directly.

The indexing process supports a seamless re-indexing by loading new data in a disconnected index before switching over.

Loading a complete government index takes approx 25 seconds on my local machine.

This is a preliminary pull request for discussion. I think it's pretty much complete but haven't shown the code to anyone else yet so would appreciate feedback.