Make consts of degenerate nullary enums not ICE.

This makes the const construction code match the logic in type_of.
Trivial cleanup: use enum_is_univariant
Factor out base::get_discrim_val from const translation
Translate constants in get_item_val, to obtain the initializers' types.

This breaks the connection between the LLVM type and the Rust type,
which is necessary to use non-nullary enum constructors, where the
type_of type is an i8 array sized to the largest variant, as const
initializers.  LLVM disallows bitcasts between aggregate types, even if
their sizes match, so we couldn't solve this by appending unnecessary
padding even if we wanted to.

The general idea should be sound, because accessing the enum value just
casts it to `{i64, i8}` anyway (and then re-casts the pointer to the
`i8` to the actual variant's type to access it), so we weren't gaining
anything from LLVM-level type checking anyway.
Allow consts to be non-nullary enum constructors
Omit needless zeroes for C-like variants of non-C-like enums