typechecker: support Enum in xhp attribute declarations

Reviewed By: @int3

Differential Revision: D1758269

Signature: t1:1758269:1419908206:4f7d0f79356d4225d45244c8d6bb22eb1f1d69bf
Make multiple inheritance a parse error

Reviewed By: @elgenie

Differential Revision: D1760023

Signature: t1:1760023:1419913001:9b1239f87d93b721329d75bfada37827f8d59a4d
Make `trait ... extends ...` into a parse error

Reviewed By: @elgenie

Differential Revision: D1760037

Signature: t1:1760037:1419901068:a37f69069762dcd3f0259c034f166244236f1163
Move instantiability checks to the checking phase.

Summary: This enable us to use the `Classes` instead of the `ClassHeap`
hashtable for the instantiability check. The former is far smaller in
size since it does not include the ASTs. Deserialization is our most
expensive operation, so this improves performance significantly.

Reviewed By: @elgenie

Differential Revision: D1758703

Signature: t1:1758703:1419815450:b4b4c7c72b4fa75ef707737e01726c4dd1e0dae3
typechecker: slightly improve fixme.py tool

Summary: ... by compiling the regex

Reviewed By: @int3

Differential Revision: D1760003

Signature: t1:1760003:1419913635:384915686396ba5468ce59dd9d8e90c094daf5f4