Export functionality

I'm starting to work on making exporting happen. Not at all ready to merge - I'm just curious what you think.
This class really wants to be a protocol buffer by now.