Temporary S2 code

Code while I'm playing with the S2 test
dataset and trying to understand it.
Refactor S2 code

Refactor the inital S2 reader code, creating
a class and methods. Also rename references
to "granules" to "tiles", for consistency
with the S2 documentation (but not that they
are still called granules in the file structure)
Skip already ingested images

Add a check in the image ingestion loop to see
if this file has already been ingested
(determined by checking if the filename and
region match an already ingested file).

We did already have a check in the method that
adds images to the database, but this is only
called  after the file has been opened and
processed, so uses unnecessary memory/time.

Note: The check on the region name is done by
looking in the archive location (to see if the
image is in the REGION subdirectory). It would
be more robust to check the region__region
field of the database entries, but that is
*significantly* slower.
Merge in updates from master
Merge in changes from add_images

Merge in the add_images branch, to add the check
on whether image has already been ingested, and
skip it if so.

(Other changes are some unfinished S2 reader stuff)