Add memory and VCPU expansion to RM-enabled queries

* Each node has one QueryResourceMgr per query it is running fragments
  for. A QueryResourceMgr handles creating expansion RPC requests, and
  monitoring the thread:VCPU ratio for each query (and requesting more
  VCPUs from YARN if oversubscribed).
* MemTrackers now have an ExpandLimit API which does nothing unless they
  have a QueryResourceMgr. This method blocks for now, but when the IO
  manager changes its API to use TryConsume(), we'll need to issue these
  asynchronously to avoid keeping hold of a thread.
* ResourceBroker etc. got updated to support the Expansion API.

Change-Id: Ia3c4635497f0563cfc5cd0e330e5f1f586577200
Reviewed-on: http://gerrit.ent.cloudera.com:8080/1800
Reviewed-by: Henry Robinson <henry@cloudera.com>
Tested-by: jenkins
Reviewed-on: http://gerrit.ent.cloudera.com:8080/1748