Introduce GA_APPEND()

This macro is used to append an element to a growable array. It replaces this
common idiom:

   ga_grow(&ga, 1);
   ((item_type *)ga.ga_data)[ga.ga_len] = item;
   ++ga.ga_len;

ga_do_grow() was extracted from ga_grow() to allow an implementation of
GA_APPEND that avoids a function call for every append. Instead, GA_APPEND tests
if there's space for the new item and calls ga_do_grow() only when a
reallocation is necessary.