IMPALA-1376: Split up Planner into multiple classes.

The main changes are:
- move code from Planner into SingleNodePlanner and DistributedPlanner
- Planner now invokes the single node and distributed planner
  as necessary; computes explain plan and resource estimates
- introduce PlannerContext to hold planning state shared between
  the two planner classes (e.g., node and fragment id generators)
- remove Analyzer param from the functions in DistributedPlanner
  to avoid confusion; only the root Analyzer from the PlannerContext
  is needed for plan paralellization and fragmentation
- move PipelinedPlanNodeSet into its own Java file; clean up and
  simplify the computation of the plan node sets

Change-Id: I310485d55bbc0e6b2dcb54e36eb68ddd2ba70f3a
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/4885
Reviewed-by: Alex Behm <alex.behm@cloudera.com>
Tested-by: jenkins