Camel string pool improvements.
Keep the pointer to the allocated string and the allocated string's
reference count together in a new StringPoolNode struct. This way a
StringPoolNode can be used as both the key and value in a GHashTable,
allowing the table to save some memory. Also use the slab allocator
for the fixed-size StringPoolNode instances.
Didn't do any real formal measurements for this so the actual reduction
in memory usage may be insignificant. If nothing else the code is more
readable now, and manipulating reference counts is less awkward.