Starting on the client

The geometry caching mechanism was, in a word, awful.  We've switched to
C++, and are now using the unordered_map.  We've also added a Xerces-
based SAX parser, based on some (very) old code that I had lying around,
so it may not build at all.

We may be able to use this same sort of thing for doing texture caching,
as a template perhaps.