Decouple file attachment paths, Includes support for S3

This PR has a number of features and tests

Now, all attempts to read uploaded files (CSV Datasets and CSV Import Config YML files) are done through a mechanism that will download the file from its url first. This works well with Amazon S3, but should also work if there is only one web server hosting the files (e.g. heroku)

S3 is enabled/configured through environment variables:
```
export TRAITDB_USE_S3="1"
export TRAITDB_S3_DEVELOPMENT_BUCKET_NAME="traitdb_development"
export TRAITDB_S3_DEVELOPMENT_ACCESS_KEY_ID="access key id"
export TRAITDB_S3_DEVELOPMENT_SECRET_ACCESS_KEY="access secret key"

export TRAITDB_S3_TEST_BUCKET_NAME="traitdb_test"
export TRAITDB_S3_TEST_ACCESS_KEY_ID="access key id"
export TRAITDB_S3_TEST_SECRET_ACCESS_KEY="access secret key"

export TRAITDB_S3_PRODUCTION_BUCKET_NAME="traitdb_production"
export TRAITDB_S3_PRODUCTION_ACCESS_KEY_ID="access key id"
export TRAITDB_S3_PRODUCTION_SECRET_ACCESS_KEY="access secret key"
```

Fixes #181 
Fixes #180 
Fixes #178