Change {let} and {param} commands to be evaluated lazily.

To do this I fundamentally changed the representation of the local variable environment to allow a snapshot to be captured by our lazy closures.  I changed from using an ArrayDeque of HashMaps to a persistent linked list of 'Frame' objects.  This way my lazy closures could capture the environment at closure time rather than using what was available at eval time.

This should enable transclusion usecases.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=80137707
Automated [] rollback of changelist 80137707.

*** Reason for rollback ***

Breaks speakeasy []

*** Original change description ***

Change {let} and {param} commands to be evaluated lazily.

To do this I fundamentally changed the representation of the local variable environment to allow a snapshot to be captured by our lazy closures.  I changed from using an ArrayDeque of HashMaps to a persistent linked list of 'Frame' objects.  This way my lazy closures could capture the environment at closure time rather than using what was available at eval time.

This should enable transclusion usecases.

***
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=80145273
Make SoyTofuException unwrap its cause, so that stack traces become more readable.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=80391732
Migrate error-prone flags to the new syntax.

See the linked bug and http://errorprone.info/flags for more info.

Tested:
[] presubmits for global presubmit queue
[]Some tests failed; test failures are believed to be unrelated to this CL
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=80430020
Rollforward of [] which was rolled back in []

Change {let} and {param} commands to be evaluated lazily.

To do this I fundamentally changed the representation of the local variable environment from a stack of hashmaps to a single array.

Each variable references/definition pair is assigned a unique integer index when resolving names during parsing. By assigning a unique id per variable we removes the ambiguity of string based names.

We should also have faster lookups of local vars/params since we don't have to hash strings or recurs up the set of stack frames.
Also because we no longer track 'frames' at runtime this entirely removes the need for the MarkParentNodesNeedingFramesVisitor.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=80656275
Change the SoyFutureValueProvider blocking callback to use a ThreadLocal instead of having the block callback registered on a per-future basis.

This solves the problem that lazy transclusions ([] broke the future flushing behavior by hiding SoyFutureValueProviders behind lazy closures.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=80771353
Find $ij params declared with the new {@inject ...} syntax in Soy.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=80846485
Add a missing goog.require()
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=80851489
Make the Java implementation of the Xid node behave the same way as the JS implementation by pseudo obfuscating with a trailing _ if no renaming map is present.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81166085
Automated [] rollback of changelist 81166085.

*** Reason for rollback ***

Fails at people.[]

[]

*** Original change description ***

Make the Java implementation of the Xid node behave the same way as the JS implementation by pseudo obfuscating with a trailing _ if no renaming map is present.

***
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81174911
Make the Java implementation of the Xid node behave the same way as the JS implementation by pseudo obfuscating with a trailing _ if no renaming map is present.

Rollforward with fix for [].
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81217962
Automated [] rollback of changelist 81217962.

*** Reason for rollback ***

Fails at social.[].all

[]

Rollback:[]
*** Original change description ***

Make the Java implementation of the Xid node behave the same way as the JS implementation by pseudo obfuscating with a trailing _ if no renaming map is present.

Rollforward with fix for [].

***
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81225694
Fix Soy unspecified iteration order issues.

- In test for EasyDict, don't assert that the toString occurs any particular order.
- Use linked hash maps for the template registry. This will help ensure
template compilation occurs in predictable orders.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81228518
Make the Java implementation of the Xid node behave the same way as the JS implementation by pseudo obfuscating with a trailing _ if no renaming map is present.

Rollforward with fix for [] and [].

***
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81278299
Fixed the _find_modules at python runtime when there is compiled python file (*.pyc) on the sys.path.

Also fixed gylint warnings
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81296105