Implement substitution for type variables.
This change does not yet address the case where there is more than one substitution, as in this example:
class S<X> {}
class S1 extends S<int> {}
class S2 extends S<double> {}
class T implements S1, S2 {}
main() {
new T() is S<int>;
new T() is S<double>;
}
Committed:
https://code.google.com/p/dart/source/detail?r=18124