Type aliases and other changes in language specification

Changes in this PR:

* New section on [Type Aliases](https://github.com/Microsoft/TypeScript/blob/langSpecTypeAliases/doc/spec.md#3.9).
* [Union Types](https://github.com/Microsoft/TypeScript/blob/langSpecTypeAliases/doc/spec.md#3.4) are now a separate kind of type, distinct from object types.
* The concept of Apparent Type is replaced with [Apparent Members](https://github.com/Microsoft/TypeScript/blob/langSpecTypeAliases/doc/spec.md#3.10.1).
* [Subtypes and Supertypes](https://github.com/Microsoft/TypeScript/blob/langSpecTypeAliases/doc/spec.md#3.10.3) and [Assignment Compatibility](https://github.com/Microsoft/TypeScript/blob/langSpecTypeAliases/doc/spec.md#3.10.4) use Apparent Types.