Track unexpected remote reads

With this patch, we mark every scan range that is expected to be a
local read according to the file block metadata from the FE. After
finishing the scan range, we check if it was actually local and if
not, log a warning and add it to the runtime profile. This will help
us diagnose cases where the metadata is stale, causing remote reads.

Change-Id: I546da4ffb80d0af8ff8f5120e9639f9943f8b77d
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/5115
Reviewed-by: Skye Wanderman-Milne <skye@cloudera.com>
Tested-by: Skye Wanderman-Milne <skye@cloudera.com>
Move fragment management out from ImpalaServer

ImpalaServer is still pretty big. One reason was that it was conflating
several separate responsibilities, including management of query
execution, management of fragment execution and responding directly to
Thrift RPCs.

This patch moves fragment execution into a separate FragmentMgr class,
and adds a (now-needed) proxy class to forward ImpalaInternalService
RPCs to either ImpalaServer or the FragmentMgr. Fragment management is
pretty self-contained (look at how small the resulting class had to be),
and so it was a good candidate to be broken out of ImpalaServer.

Change-Id: I24efb1a71a4225f9f85610565bf557a2e677e629
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/4854
Reviewed-by: Henry Robinson <henry@cloudera.com>
Tested-by: jenkins
Track expr memory allocations as part of parent node's usage

This change gets rid of RuntimeState::udf_mem_tracker_, and introduces
ExecNode::expr_mem_tracker to replace it. This way expr allocations
are still separate, but they fall under the correct exec node.

Change-Id: Iaf2cf610c2adf244ade94a9adb906cd68ad78838
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/5000
Reviewed-by: Skye Wanderman-Milne <skye@cloudera.com>
Tested-by: jenkins