Create topic tables from topic

This allows easy addition of new topics.
Fix some requires so topic_test can be run in isolation
Allow serialize to return an object pre-to_s

Normally serialization should return a string, but the generic need is that the
returned object will become the serialized string when asked to become one.
This allows numbers to be preserved in formats like JSON that don't need the
"serialized" object to ever become a string.  Kinda subtle but works for
supporting both CSV and JSON.
Require idempotency for deserialize

Analagous to the previous commit this ensures that objects can be posted as
themselves via JSON (or other formats, I imagine) instead of as strings.  Wierd
and subtle a requirement but practical.
Add posting of json/csv/form data to the server