Only use the bigger discriminant type when alignment allows

Just using the alignment of the type results in types being larger than
they should be. So only expand the discriminant type when alignment
allows. Specifically, when the first non-zero-sized field of every
variant is the same size as alignment.
Add enum size cases to type-sizes test