[NEW TYPE INFERENCE]

- Handle declared properties of object literals
- Handle recursive functions correctly
- Don't warn about inexistent props on ?
- Warn for use of the restarg formal name
- Add undefined to the type of optional formals
- Fix bugs about prototype property declarations
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64104809
Externs for Maps API v3.16.6.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64105022
Fix error messages: s/functions/function's/

From http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html:

"A single quote itself must be represented by doubled single quotes '' throughout a String"
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64107275
Put the early code-removal passes under options.extraSmartNameRemoval.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64147819
Implement nextTick in terms of Promise where availale.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=64164043
Merge remote-tracking branch: upstream/master