Introduce QueryFuture

Summary:
This supports four ways for executing queries against MySQL:

# [[ http://php.net/mysqli.poll | Async queries ]]
# [[ https://github.com/facebook/hiphop-php/blob/363d1bb20fe84b4cdc2dc0f4c7b1dd39d167a1f5/hphp/idl/fb.idl.php#L911 | Parallel queries ]]
# Multi queries: [[ http://php.net/mysqli.multi_query | PHP ]], [[ https://github.com/facebook/hiphop-php/blob/363d1bb20fe84b4cdc2dc0f4c7b1dd39d167a1f5/hphp/idl/mysql.idl.php#L757 | HPHP ]]
# Plain old single queries

This is just a rough concept, I'll improve it later.

Test Plan:
  $result = id(new QueryFuture($conn, 'SELECT 1'))->resolve();
  print_r($result);

  $futures = array(
    new QueryFuture($conn, 'SELECT 1'),
    new QueryFuture($conn, 'SELECT 2'),
  );
  foreach (Futures($futures) as $future) {
    print_r($future->resolve());
  }

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Differential Revision: https://secure.phabricator.com/D5025