Force flexible arrays to be aligned to QUANTUM_SIZE

This fixes a bug where non-aligned flexible struct members will point
to the same memory as previous fields, e.g., in the following struct:

typedef struct Tuple
{
  uint16_t int16;
  struct
  {
    int32_t int32;
  } value[];
} Tuple;

writing to value->int32 will overwrite int16.