Refactor the API to have consistent create/destroy functions
The current master doesn't include any building block that requires varargs for init, except for tiling that could be redesigned to do without. The goal should be to refactor the API to provide:
- create/destroy functions that take a
struct building_block **as input to alloc and init /finalize and free objects
- init/fini functions that take a statically allocated buildingblock as input to initialize/finalize them These two function couple should not take ... lists of arguments, and we should keep the DECL macros around.
- vcreate/vinit functions that take va_list as arguments.