Attributes translation

This turns gcc __attribute__ functionality into macros that can be used
it also allows for easy fallback if the cmake system detects alignas/alignof support, provides maxalign and specific align macros, takes care of inline and noline

packing structs is rather ugly, but this seems to be the least ugly of the hacky workarounds for the differences in implementationation