1. Bump SolrJ version from 4.2.0 to 4.5.1
2. Refactor AsyncSolrClient & AsyncQueryBuilder into a trait (IAsyncSolrClient) and an abstract class (AbstractAsyncQueryBuilder) which allows us to plug in an EmbeddedSolrServer for testing purposes
3. Modify [I]AsyncSolrClient.withTransaction to not complete the future until the commit() or rollback() has completed