Fix bug in List unpacking
A (shitty) attempt at XUnion

This is broken mostly because of sizes. There are cases (e.g. when something
has a variable number of elements in a member list) where we can't state
excatly the size of the list at xcb-compile time. Instead, each structure
should have a Maybe size, where if it contains a (variable-length) list, its
size is unknown, while if it contains all statically known stuff, we can
compute the list.
Don't try to unpack off the end of the buffer
Don't pass size when it is unknown