path: add 'garray.h' to headers

The function prototypes use garray_T* arguments, but the header is not
included in path.h. Technically we could also get away with a forward
declaration since we're just using the pointer, but I don't see the urgent
need for that.
test: fix the cimport method

This commit will hopefully allow the cimport method to be used just as one
would use #inclue <header.h> in C. It follows the following method:

1. create a pseudoheader file that #include's all the requested header files
2. runs the pseudoheader through the C preprocessor (it will try various
   compilers if available on the system).
3. runs the preprocessed file through a C formatter, which attempts to group
   statements on one line. For example, a struct definition that was
   formerly on several lines will take just one line after formatting. This
   is done so that unique declarations can be detected. Duplicates are thus
   easy to remove.
4. remove lines that are too complex for the LuaJIT C parser (such as:
   Objective-C block syntax, crazy enums defined on linux, ...)
5. remove duplicate declarations
6. pass result to ffi.cdef
test: no longer define ad-hoc C headers

With the improved cimport helper, we can just load what we want.
test: [squash] add more include paths
TEMP: try to get busted to show the true error
[REMOVE] print all header lines
[SQUASH] supply -D_GNU_SOURCE