ga_growsize should be >= 1

I know it could be 0 sometimes. Running the tests with
`assert(gap->ga_growsize > 0)` in ga_grow() crashes nvim while running the
tests.

 - Add a setter for ga_growsize that checks whether the value passed is >=1 (log
	 in case it's not)
 - log when ga_grow() tries to use a ga_growsize that's not >=1
 - use GA_EMPTY_INIT_VALUE is many places
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.
Introduce GA_APPEND_VIA_PTR()

Similar to GA_APPEND(). Replaces this pattern:

    ga_grow(&ga, 1);
		item_type *p = ((item_type *)ga.ga_data) + ga.ga_len;
		p->field1 = v1;
		p->field2 = v2;
		ga.ga_len++;