Implement shapes with class constant fields.

Summary: Add support for using class constants as field names in shapes to Hack. Shapes must either use all class constants or all strings. Class constants can either be ints or strings, but must all be the same. This doesn't include extending HHVM to support them.

Reviewed By: jwatzman, eletuchy

Differential Revision: D1377943
Readd xmlwriter quick test

Summary: Was only failing on my machine due to a local build issue. Doesn't seem to be a problem on sandcastle, or on mine after a clean build

Reviewed By: @ptarjan

Differential Revision: D1444452