Fix const enums better: let them have the same alignment as an "opaque enum".
Pad out enum consts to the expected size; makes enums in tuples work.

This is wasted space if the const is just an enum, but optimizing that
case without breaking everything else is an issue that can be addressed
separately.
Also need to pad out "C-like" enum consts (paths as well as calls).
Make vectors of enums work as constants
Fix pointer consts to work with enums
Add a test for vstore, which already works
Fix const enum type issues for structs.
Make tuple-like structs containing enums work as constants.
Fix vector indexing in consts so it works with the enum vector const fix.
auto merge of #4745 : jld/rust/constenum-bis, r=graydon

There were a bunch of problems with consts where an enum was contained within some other type (vector, tuple, struct, etc.); some of these would cause LLVM assertion failures, and some would silently read from the wrong address.  These changes should fix all of that.

It would be good if someone with access to a win32 host could do the equivalent of `make check-stageN-rpass TESTNAME=enum` on that platform before merging this.