[NEW TYPE INFERENCE] Fix prop accesses for enums.

Make EnumType and ObjectType inherit from the same abstract class to avoid code duplication of the methods that work on sets of enums/objects.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67539659
[NEW TYPE INFERENCE] Clear envs after analyzing each scope.

Also, delete tests that depended on this behavior.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67552765
When rewriting goog.defineClass strip the original jsdoc from the property definitions before adding them to the new definition. The prevents the obsolete jsdoc on the constructor from being used in some cases.

-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67560169
[NEW TYPE INFERENCE] Don't add locations when they are not needed.

We can assume that formals with declared types don't need the
added inference that locations give.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67560710
Move the languageIn/languageOut checking to Compiler, so that Es6ToEs3Converter only contains the actual transpilation logic.

This also checks for invalid language-in/language-out combinations: If the two languages don't match, or the input language must be ES6 and the output must be ES3.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67561577
A couple more test fixes for DeclaredGlobalExternsOnWindow.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67561940
Automated g4 rollback of changelist 67561577.

*** Reason for rollback ***

Breakages

*** Original change description ***

Move the languageIn/languageOut checking to Compiler, so that Es6ToEs3Converter only contains the actual transpilation logic.

This also checks for invalid language-in/language-out combinations: If the two languages don't match, or the input language must be ES6 and the output must be ES3.

***
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67564320
Add a setLanguage() method to CompilerOptions which sets both the input and output language.

This is what setLanguageIn did until recently, and is what most projects should use.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67614500
Don't use Map.keySet when we only care about values.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67616503
[NEW TYPE INFERENCE] Don't do backward inference when not needed.

For functions with annotated formals+outers, there is nothing to be gained
from backward inference, so we can skip it without losing precision.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67619828
JsDoc: parse @package annotations.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67621225
Remove support for the labs version of goog.defineClass now that it has been promoted out of labs.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67624712
Remove extraneous block around rewritten goog.defineClass code
Fixes #432
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67634410
Remove workaround for a bug in the RegExp parser in Opera 9.2

See discussion on issue #423 -- this has been tested in Opera 10, so it's unlikely to be present in any newer versions of Opera (especially since the latest ones are based on Chromium)
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67635208
Readd the nodejs externs mistakenly removed from github.

Fixes #424
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=67639580