Rename map_size -> map_len.

We have vec_len and buffer_len to get the number of items available
in the container. Rename the map accessor for consistency.
Unnamed struct was not aligned properly.

8cc miscalculated the alignment of an anonymous struct in a struct,
so the anonymous struct was not aligned at a desired boundary.
Warn on named zero-width fit-field. Zero-width fit-field must be unnamed.
Make it compile with Clang.
Fix struct bit-field layout.

I don't still fully understand the rules of how to layout bit-fields.
It looks like a bit-field of type T should not be on type T's natural
boundary. We had a bug in the code to handle that rule.
Cleanup. Add comments.
Fix alignment of struct containing anonymous fields.

Anonymous fields can never be accessed, they are just space between fields.
They doesn't have to and shouldn't be taken into account when we calcaulate
alignment. This looks like a x86-64 ABI requirement, although I'm not sure
where it's documented.