Generate metadata from a Go struct definition

Metadata for generating Go code mappings can now be generated by inspecting an
existing Go struct.

The tablestruct command now is invoked via several subcommands:

 * gen - the Go code generation step
 * struct - this changeset's main feature, metadata generation
 * support - generation of support code that makes tablestruct work

In addition, the table name and the name of the struct field that corresponds to
the primary key can both be overridden at the commandline (in the struct
subcommand).