Always pass tuples to % when using %r.

When a string takes a single substitution, like `'%r' % smoo`, it throws a "TypeError: not all arguments converted during string formatting" in the case that smoo is a tuple of the wrong length. This could easily happen in these spots here, since we're reporting on mysterious, bad input.
Factor up error trapping for index operations.

Why is the default to swallow errors? That seems funny.
Add close_index method.
Add open_index method.
Merge pull request #21 from erikrose/safe-reprs

Always pass tuples to % when using %r.
Add update_settings method. Bring in mock for tests.

Add *.egg to .gitignore, because tox lays down mock eggs in the root dir for some silly reason.
Add everything needed to get Votizen limping along. Tons of changes:

* Teaching it how to encode datetimes and dates into JSON.
* Lift to_python and from_python up into static methods so they remain backward-compatible while being callable from the top-level custom JSON encoder. They should ultimately be top-level functions.
* Add cluster health API.
* Raise a more specific exception for HTTP error codes so callers can catch it without examining some string.
* In routines that can take either one or many indexes, don't require the caller to wrap a single index name in a list. (Forgetting to do that leads to slightly unobvious errors. Doing it makes call sites noisy for common cases.)
* Import Timeout from requests so callers don't have to assume that requests is used if they want to trap timeouts.
* Add the exceptions to __all__; they're public.
Compress some assign-then-returns.
Standardize on single quotes where not clumsy.
Merge in the string-substitution fixes.
Set prefetch=True so connections can more quickly be returned to the pool.
Remove doctests about the terms API, which apparently isn't implemented.
Add load-balancing and failover. Also...

* Kill _build_url(), which was called from only one place.
* Stop catching "no such HTTP method" errors, which can happen only because of bugs in pyelasticsearch and shouldn't be papered over.
* Let ConnectionErrors percolate up rather than turning them into ElasticSearchErrors. I'm ambivalent about this, but now at least we treat them the same way as Timeouts.

Still to do:
* Add optional auto-retrying.
* Clean up readme.
* Tests for the pooling
Add auto-retrying on connection failure or response timeout.

Needs tests.
Defer string substitution in log messages until it's actually needed.
Comply with PEPs 8 and 257. Rename morelikethis to more_like_this.

Tests are still out of compliance, but I want to largely redo them anyway.
Make _make_path take *args to save a few tokens.
**kwargs is a special thing; you don't have to worry about writes to it leaking back to the passed-in dict.
Compress style a bit more so I can see patterns.

I must have gotten distracted before I finished with the PEP-ing. Still seems like there's too much code for what it does.
Tersen flush().