implement rest storage backends (S3, azure, google) (#98)
Make the seeder more lenient with regard to source/cache failures

* by default, only abort the seeding if more than 1% of the last 1000
  requests / tile_sets have failed. This can be set to 0% to halt on
  first error, or 100% to ignore all errors. (-P|--percent)

* optionally log failed requests to a file (-L|--log-failed [file])

* optionally use the file created by -L|--log-failed to retry only the
  failing requests of a previous run (-R|--retry-failed [file]). Should
  be used with the exact same arguments as when running with
  -L|--log-failed. Can be used in conjunction with -L|--logfailed
  [file2] to log the failures during the retry

* use a dedicated thread for logging progress and errors