src/main/java/com/conveyal/gtfs/GTFS.java
public static FeedLoadResult load (String filePath, DataSource dataSource) {
        JdbcGtfsLoader loader = new JdbcGtfsLoader(filePath, dataSource);
        FeedLoadResult result = loader.loadTables();
        return result;
    }
public static FeedLoadResult load (String filePath, DataSource dataSource) {
        JdbcGtfsLoader loader = new JdbcGtfsLoader(filePath, dataSource);
        FeedLoadResult result = loader.loadTables();
        return result;
    }
Load the GTFS data in the specified file into the given JDBC DataSource.

About loading from an object on S3:
We've got a problem with keeping the identifier on S3 the same as the identifier in the database.
Question: do we really want to load the feed from S3 or do we just want to move the local file to S3 when done?
i.e. user uploads to the datatools back end,
The advantage of having the end users upload to s3, then is that only the files currently being processed need
to be held on our backend server, not the whole queue waiting to be processed.
But I think currently we have some hack where the end user gets a token to upload to S3, which seems bad.
Probably we should have end users upload directly to the backend server, which then loads the feed into RDBMS,
uploads the file to S3 with the unique name supplied by gtfs-lib, and deletes the local file.

@return a unique identifier for the newly loaded feed in the database