Templatize the definition of Array in externs

This enables the new type inference to use templated arrays.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=74787679
Add suport for parsing and evaluating propType('p', R) expressions that will return the type of the property in R, if it does not exist then it will return UNKNOWN
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=74787830
[NEW TYPE INFERENCE] Don't crash on generic function subtypes.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=74790061
Make transpilation compatible with checkProvides
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=74795519
[NEW TYPE INFERENCE] Update simpleInferExprType to infer Array.<?>

After the externs change to make Array templated, we must also
use a templated type in GlobalTypeInfo
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=74809390