Use declarative description to drive datasource data conversion

Use a declarative description to describe the translation from a python object
to Congress table rows.  For example, the translator:

 {'translation-type': 'HDICT',
   'table-name': 'example_table',
   'id-col': 'id_col',
   'selection-type': 'DOT_SELECTOR',
   'field-translators': ({'fieldname': 'field1', 'col': 'col1',
                          'translator': {'translation-type': 'VALUE'}},
                         {'fieldname': 'field2', 'col': 'col2',
                          'translator': {'translation-type': 'VALUE'})}

Would create a single table named 'example_table' with three columns:
  (id_col, col1, col2).

Given an object {'field1': 123, 'field2': 456}, the translator would produce a
row for table 'example_table' containing (id, 123, 456) where id is the hash
of (123, 456).

This change adds 4 conversion types HDICT, VDICT, LIST, and VALUE.  The
container types (HDICT, VDICT, and LIST) can recursively contain conversion
types.

Change-Id: I9f93e6e81cc7cf010a296a9a9ea784f0425ff720
Merge "Use declarative description to drive datasource data conversion"