Add run-time type information.

This patch emits three new tables:
 - `.methods` - describes the names, attributes, and signatures of scripted methods. It is intended to supercede `.publics`.
 - `.types` - describes the signatures of types. Right now, this encodes the existence of enums (not their fields, yet) and the method signatures of functags/typedefs. It is intended to replace `.tags`.
 - `.rtti` - Like the .names section, except for type signatures.

I still need to write a validator, I don't want to merge this in until I'm sure all the encodings work and are reasonably future-proof.