Add scheduled server state observation.
Add more tests for PingStatusObserver
RoundRobinLB now checks the server status.
Simplify AsyncSolrClient error handling.

- The try/catch(IOException) in query was not necessary, because
  exceptions could only occur in the AsyncCompletionHandler
- toQueryResponse could throw an exception. This lead to a
  failed future because AHC invokes onThrowable with an exception
  thrown by onCompleted. Even if this is documented, it's more clear
  to handle this explicitely.