The string encoding problem, or "How do we store strings in the database?"

Rationale:

There are several stages data may pass through:
- acquisition: the filesystem crawler runs through the filesystem, requesting that the metadata expert serializes each file into a storable (persistable) representation
- storage (persistence): the index database receives persistable representations of objects and stores them
- querying and retrieval: the different services that query the database retrieve XML-serializable representations of stored objects

Deciding on an encoding methodology is not easy.  There are several considerations:
- IPC with clients is performed with XML-RPC.  XML-RPC must be UTF-8 on the wire.
- platforms where the metadata service runs may have different encodings - this impacts file systems, file contents and others.
- the Zope ZODB does not support indexes on Unicode attributes.  This rules out persisting strings Unicode objects, which would be the ideal approach, due to its unambiguous representation.

Ease of development and performance require an approach where conversions/transcodings are kept to a minimum.  Thus:
- The metadata expert (thus, the plugins as well) must deliver serialized objects where all strings are platform-encoded regular strings.  The crawler then delivers this object to the indexer, along with its key, which must also be a platform-encoded string.  The indexer should be able to assume object keys and objects contain only platform-encoded strings.
- IPC happens using the strings that naturally come through the interfaces, which must be UTF-8-encoded. FIXME find out!