Offer new conversion interface for types.

Closes #20.
Reimplement UUID without dependencies.
Tweaks to operator definition.
Allow for more flexible forms of access.
Fix multi-type operators.
Prepare new index structure.
Unified printing and parsing infrastructure.

This commit bundles numerous changes related to the way parsing and printing
works. Three new primitives unify the mechanisms for parsing, printing, and
type conversion. See util/{parse,print}.h and convert.h for details.

Numerous fixes and tweaks made it into this commit along the way.