Add catalog management support

data.py now supports additional verbs (list, update, add-dir):

$ python data.py catalog list -h
usage: data.py catalog list [-h] catalog

positional arguments:
  catalog     Path to catalog file

optional arguments:
  -h, --help  show this help message and exit

$ python data.py catalog update -h
usage: data.py catalog update [-h] catalog store field value

positional arguments:
  catalog     Path to catalog file
  store       Data store to update
  field       Field to update
  value       New value

optional arguments:
  -h, --help  show this help message and exit

$ python data.py catalog add-dir -h
usage: data.py catalog add-dir [-h] [--name NAME] [--cache-all] catalog directory

positional arguments:
  catalog      Path to catalog file
  directory    Directory to add

optional arguments:
  -h, --help   show this help message and exit
  --name NAME  Name of the datasource, defaultsto the name of the directory with
               :fs
  --cache-all  Set the cache all field to true

Example usage:

$ python data.py catalog path/to/catalog.json list
Catalog: Catalog of Test Data
elevation:fs
  path: /var/data/gt/elev
  cacheAll: yes
  type: fs
landsat:fs
  path: /network/data/landsat
  cacheAll: yes
  type: fs

$ python data.py catalog update path/to/catalog.json landsat:fs cacheAll no

$ python data.py catalog path/to/catalog.json list
Catalog: Catalog of Test Data
elevation:fs
  path: /var/data/gt/elev
  cacheAll: yes
  type: fs
landsat:fs
  path: /network/data/landsat
  cacheAll: no
  type: fs

$ python data.py catalog add-dir path/to/catalog /network/data/modis

$ python data.py catalog path/to/catalog.json list
Catalog: Catalog of Test Data
elevation:fs
  path: /var/data/gt/elev
  cacheAll: yes
  type: fs
landsat:fs
  path: /network/data/landsat
  cacheAll: yes
  type: fs
modis:fs
  path: /network/data/modis
  cacheAll: no
  type: fs