Add SolrServers: provides list of known solr servers

There are two implementations provided:
- StaticSolrServers: keeps a fixed list of urls
- ReloadingSolrServers: can load solr server urls from a url, continuous
  reloading still has to be done externally
Update solr to 4.10.1
Improve SolrRunner to support multiple ports
Add sbt-dependency-graph plugin, adds dependency-graph
Add SolrCloud / ZooKeeper support.

This also adds support for a configurable RetryPolicy.

The README is updated with information about new features.

In summary, Solr Cloud is supported with the following properties / restrictions:

* No Shard Support (yet, please raise an issue or submit a pull request)
* No Collection Aliases supported (should be implemented next)
* Can use a default collection, if this is not provided, per request the `SolrQuery` must specify
  the collection via the "collection" parameter.
* Querying solr is possible when ZooKeeper is temporarily not available
* Construction of `CloudSolrServers` is possible while ZooKeeper is not available. When ZK becomes
  available `CloudSolrServers` will be connected to ZK. As interval for trying to connect the
  `CloudSolrServers.zkConnectTimeout` property is (re)used (10 seconds by default). Connection is tried "forever",
  but of course this does not prevent `CloudSolrServers` or `AsyncSolrClient` to be shutdown.
* Construction of `CloudSolrServers` is possible when no solr instances are known by ZK. When solr servers
  have registered at ZK, `CloudSolrServers` will notice this. As retry interval the `CloudSolrServers.clusterStateUpdateInterval`
  property is (re)used (1 second by default).
* ZK cluster state updates are read using the `CloudSolrServers.clusterStateUpdateInterval`.