Allow enums to be used as type names in mojom.

This is more complicated than I expected. A lot of complexity is to support enums inside structs/interfaces. Some noteworthy things about this patch:
- Looking up a Kind when encountering a struct field or method parameter got trickier. LookupKind handles the scope resolution rules.
- Inner enums are still not fully supported. You can't refer to them outside the struct they were defined in.
- We assume all enums take up 4 bytes. I'm not sure how to fix this.

Also fixed a small bug with struct padding.

BUG=320090,345119

Review URL: https://codereview.chromium.org/172803003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@254221 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 254221