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: Ifcdd2675cb577a931039fcd980f1a69836024a91
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/5503
Reviewed-by: Alex Behm <alex.behm@cloudera.com>
Tested-by: jenkins