Log the commands run during doc generation

Makes it easier to pinpoint what command failed as well as
the exact command run.
Account for some keys not being in rows

Fixes #198.
Find all possible column names in list of dicts

Rather than relying on the first element to tell us all the column
names, we iterate through all the list of dicts collecting the
column names.  This accounts for when new keys are defined in
rows other than the first.

Fixes #199
Merge branch 'table-fixes' into develop

* table-fixes:
  Find all possible column names in list of dicts
  Account for some keys not being in rows
Merge remote-tracking branch 'origin/develop' into ec2-add-port