Garbage collection and other goodness

This pull request removes over 8,000 lines of code by adding the BDW garbage collector to take care of memory management. This removes every call to free and much other code devoted to memory management, as well as fixing a number of memory management bugs and ensuring they won't be introduced in future.

A lot of other cleanup, mostly gnulib-based, is included.

Several important and highly-portable dependencies, such as libxml and libspiro, have been made mandatory.