Codegen-enabled operators should create codegen object immediately

ScalarFnCall exprs will use codegen if the codegen object is already
created, even if the operator calling the exprs does not codegen. This
is good for performance. After the lazy codegen intitialization
change, ScalarFnCalls in e.g. scan nodes were not using codegen
because the fragment's codegen object would be created later in the
Prepare() phase, hurting performance. To fix this, have
codegen-enabled operators create the codegen object immediately before
preparing child nodes / exprs.

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