[NEW TYPE INFERENCE] Handle @this in function jsdocs.

- Move function-jsdoc code from GlobalTypeInfo to JSTypeCreatorFromJSDoc.
- Use ownerType only to mean "polymorphic method", not to look up type variables.
- Bugfix for NominalType unification.
- Bugfix for @nosideeffects in jsdoc.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81273296
[NEW TYPE INFERENCE] Warn about !T when T is a type variable

Since this is not supported, warn explicitly rather than silently ignoring
the annotation.
This helps to improve the situation around issues #209 and #723
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81282745
[NEW TYPE INFERENCE] Make sure that specialization in instanceof can't go to bottom.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81286085
Allow extending requirements.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81299225
Treat template literals as expressions.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81342845
Automated g4 rollback of changelist 80781799.

*** Reason for rollback ***

This change starts an awful chain of consequences that leads to the current type system's distinction of declared and inferred record types.As is this causes some inferred record types to become declared record types.  It is unclear if it is time well spent to try to fix this. An alternate solution for goog.module is proposed.  However, that solution doesn't help ES6 modules or other module systems that naturally have a lot of type declaration aliases.  Native understanding of ES6 modules is, of course, the correct solution there.

*** Original change description ***

Improve type inferrence for goog.module exports (part 1 of 3):
Fix declaration of type aliases with inferred constants.

***
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81344430