Combined locus/loci, info objects for genes & transcripts, reconstruct missing entries & columns for old releases

Rather than repeating `self._create_database()`, what about:

```
    if exists(db_path):
        db = sqlite3.connect(db_path)
        # maybe file got created but not filled
        if datacache.db.db_table_exists(db, 'ensembl'):
            return db
    return self._create_database()
```