Add queueAddAsync command

When chaining commands, it is sometimes necessary to have an async
command that calls a provided callback when complete. For example:

driver.chain()
  ...
  .queueAddAsync(function(cb) {
    http.get('http://google.com', function(res) {
      if (res.statusCode === 200)
        cb();
      else
        cb(new Error('Failed to reach google.com'));
    });
  })
  ...

This commit adds the queueAddAsync functionality. The function may be
called with an optional second function that is run synchronously after
the first function completes. This is to keep the behavior the same as
other functions.