Build a connection management class to handle multiple connections to
multiple hosts, passing them out for use. Both HTTP and bare sockets are
supported.

* riak/transports/connection.py:
  (ConnectionManager): new base class for managing connections
  (HTTPConnectionManager): manage HTTP connections
  (Socket): new connection type, for bare sockets
  (SocketConnectionManager): manage bare socket connections
  (NoHostsDefined): simple exception when we cannot open a conn

* riak/transports/http.py:
  (RiakHttpTransport.__init__): use a connection manager
  (RiakHttpTransport.__copy__): disable for now
  (RiakHttpTransport.parse_body): can't print host/port right now
  (RiakHttpTransport.http_request): rebuild to use the connection manager.
Add/expand some commentary in the ConnectionManager, and add code to open
a connection to the Riak server(s) once its host/port is defined. When a
host (and port) is removed from the hostport set, then remove connections.
Merge branch 'simplify' into newhttp
Skip RiakHttpReuseTransport tests because that transport is broken (it is
redundant, given the new RiakHttpTransport capabilities)
Fixes via @reiddraper.

* riak/transports/connection.py:
  (ConnectionManager.add_hostport): fix typo: s/conn/conns/
  (Connectionmanager.remove_host): tweak control flow to move conn.close()
    outside of the try/except.
Merge branch 'master' of git://github.com/basho/riak-python-client into newhttp
Adjust for compatibility with Python 2.5
Pass a ConnectionManager to the transport constructor.

Create an appropriate CM and pass that to the transport. We also adjust
the constructor signature and allow for arbitrary options to be passed to
the transport (eg. Http takes a prefix and mapred_prefix). Some backwards
compat code has been introduced in all transports (other than the basic
RiakHttpTransport) to extract a host/port pair from the CM.

This commit also re-enables testing of RiakHttpReuseTransport, even though
it is busted and should go away "soon".
Fix the transport creation in the search object.
First draft of a background thread to monitor connections.
Add a utility function for marking APIs/usage as deprecated.
Add an API level to the transports, with deprecation warnings.

* riak/transports/transport.py:
  (RiakTransport): document the 'api' classvar, but not enter a default.
    all subclasses must provide the default explicitly.

* riak/transports/http.py:
  (RiakHttpTransport): notate the class is now API v2.

* riak/transports/pbc.py:
  (RiakPbcTransport): notate the class is now API v2.

* riak/client.py:
  (RiakClient.__init__): handle api < 2 transports

* riak/search.py:
  (RiakSearch.__init__): if api < 2, then raise a deprecation warning. the
    old code would simply fail, so we are "allowed" to bail out.
Merge branch 'master' of git://github.com/basho/riak-python-client
Merge branch 'master' into newhttp

Conflicts:
	riak/util.py
         -- simple conflict due to diff context change. fixed imports.
First draft at fixing issue #53.

Introduce transport.put_new() to deal with returning the key generated by
the server (the signature for .put() has no place to return it).

* riak/riak_object.py:
  (RiakObject.store): if the object does not (yet) have a key, then use
    the .put_new() method to save the object and get the new key.

* riak/transports/transport.py:
  (RiakTransport.put_new): new abstract method for storing an object and
    allowing the server to generate the key

* riak/transports/http.py:
  (RiakHttpTransport.put): factor the header creation out into ...
  (RiakHttpTransport.build_put_headers): ... this.
  (RiakHttpTransport.put_new): new method to store the new object and
    return the server-generated key

* riak/transport/pbc.py:
  (RiakHttpTransport.put_new): add a draft stub for implementing put_new
    and returning the server-generated key (doesn't work).
Test the retrieval of a new object's key, and its format.
Fix extraction of the key from the Location: header.
Add RiakPbcCachedTransport.put_new() and some missing docstrings.
Properly implement RiakPbcTransport.put_new()
Add retry logic to the HTTP request method.

This also closes connections whenever an error occurs, for safety. This
ensures the HTTPConnection object returns to a usable state.