CDH-18785: Move optimize module from PlanExecFragment Prepare() to Open().

We start up plan fragments in level order, calling Prepare() one level at a time.
Currently, OptimizeLlvmModule is called at the end of Prepare(). OptimizeLlvmModule()
compiles the IR which can be expensive (~1 second). By doing this level order, we
serialize the compile time and for big plans, this can add up.

This change is trivial by moving the OptimizeLlvmModule() call to the Open() phase.

The snipped from the issue is (running on an empty table):
The codegen time is rows available & first row fetched.

Before:
Query Timeline:
 Query Timeline: 4s182ms
  - Start execution: 2.648ms (2.648ms)
  - Planning finished: 321.5ms (318.357ms)
  - Rows available: 4s161ms (3s840ms)
  - First row fetched: 4s163ms (1.368ms)
  - Unregister query: 4s167ms (3.786ms)

With this patch:
Query Timeline: 2s111ms
  - Start execution: 2.623ms (2.623ms)
  - Planning finished: 369.284ms (366.660ms)
  - Rows available: 2s018ms (1s649ms)
  - First row fetched: 2s093ms (74.962ms)
  - Unregister query: 2s097ms (3.805ms)

Change-Id: Ia78782e4708313ed197877749e80a9a68eeec551
Reviewed-on: http://gerrit.ent.cloudera.com:8080/2584
Reviewed-by: Nong Li <nong@cloudera.com>
Tested-by: jenkins