play with alignment; add compact mode

DO NOT MERGE
This PR aims to expose our need&workaround and start a  discussion about the best way to add this feature upstream.

One of the lib we use (on windows) requires structures to be packed with 1-byte alignment.

This patch does not deal with generated stubs.
Still need to manually add the following when generating stubs:
`#pragma pack(push, ..., 1)`