Use logger with module name in crimedb.stl.
Add crimedb.geocoding module

- Contains geocode() method that geocodes the given iterable of
  addresses, yielding results. Uses the MapQuest API for geociding.
Add <dir> metavar for --data-dir/--cache-dir options
Indicate that ERROR is the default root log level in help.
Add --module-verbosity option to bin/stl-download
Add more information to logging format
Use 'work dir' instead of 'cache dir'

- This is prep work for persisting a few different types of intermediary
  files rather than simply caching files to avoid downloading them
- Store STL files in raw/ subdir of work dir
Read Crime objects from intermediate files in stl.crimes()

- Rather than re-deriving Crime objects from raw files in crime(), read
  pre-created JSON objects from an intermediate file. Populate these
  intermediate files when a new CSV has been downloaded.
Add 'region' kwarg to geocoding.geocode()

- This argument is used to indicate a bounding box to the underlying
  geocoding implementation. For MapQuest, this seems to improve the
  results. We have such a region anyway given that we know the
  jurisdiction of the crime dataset that we're operating on.
Filter out points not contained by region in geocode()

- If the caller specifies a region to geocoding.geocode(), use it to
  filter out results that are not contained within the given region.
  This can be useful becaues the MapQuest API only accepts a bounding
  box, which is more permissive than a Polygon -- results will be
  returned that are within the bounding box but not within the region.
Geocode STL crimes that have invalid SPCS coordinates

- Use MapQuest Geocoding API to geocode STL crimes whose SPCS
  coordinates are out of bounds
- Configure MQ geocoder in bin/stl-download
- Re-name geocode() to geocode_mapquest()
- Add geocode_null() which always fails