[NEW TYPE INFERENCE] Optimize accesses to ControlFlowGraph

Access control flow graph nodes with DiGraphNodes when possible
to avoid unnecessary lookups.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72411902
When there is a generator method in a class, put the "generator function" property on the *function* not the MEMBER_DEF node. Otherwise, Es6RewriteGenerators will not rewrite it.

Likewise for arrow functions.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72412146
Added a import / export tests for variables and a simple class.
Added @typedef annotations for typechecking.
Bypassed "goog" in VariableReferenceCheck since the check currently runs after rewriting module and before the Closure passes.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72415108
Use originalGeneratorBody instead of 'n' when looking for references to 'arguments' and add a test.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72430104
[NEW TYPE INFERENCE] Split analyzeExprFwd and analyzeExprBwd into smaller functions.

This will help us see more fine-grained data in the profiler.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72430689
Add the type transformation information to the TemplateType and incorporate this information in the creation of function types (FunctionTypeBuilder)
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72431951
[NEW TYPE INFERENCE] Make TypeEnv#join faster.

Don't look at the first env twice. Don't add all keys to a new set.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72432217