Add a core.py

Core.py is meant to be a replacement for MotifAtlasBaseClass.py. That is to say
it will contain the classes that all loaders (and exporters eventually) will
inherit. It is meant to centralize logic about whether or not we should compute
some annotations. It also contains things for handling sessions, storing to the
database and matlab interfaces. My hope is that by doing this it is much simpler
and more reliable to add new importers. Right now any class using it need only
add 3 methods and will get lots of useful functionality. Doing this will provide
a uniform interface to all loaders, which will be very useful. It differs from
the current base class in that it is a new style class and does not contain all
functionality.

It will eventually supplant MotifAtlasBaseClass but for now it cannot. Because
it is a new style class the initialization of child classes will be different.
This will not contain all functionality of the current base class. For example,
it will not setup logging, this will be done at the application level. However,
we need to add things such as emailing in the future. Once this module is more
mature I will begin to move older classes over to it. Probably starting with
simple ones like distances and coordinates. For now I will use it on the new
parts of the pipeline I'm developing, such as storing polymer alignments. These
parts aren't ready to be in the core but are useful and will provide a good test
case for this module.
Use new core.py classes

Core.py provides a standard interface and functionality for loaders. I'm making
these classes use the standard loaders.
Reorganize correspondence loaders

There are several subparts to loading correspondence data. I'm refactoring
everything into one module and having the parts use core.py. This will hopefully
provide a simpler method for loading this data.
Add logging information for failures

It is useful to know how many structures failed sometimes. This adds logging
info about that.
Put loading mlabwrap in a try/except

Not all environments we test things on have mlabwrap install. Like my labtop for
example. This allows me to load core.py despite this.
Attempt at loading dcc data

I'm not 100% sure on how the dcc data is represented in cif files, but this is
an attempt at loading it as needed.
Fix some silly typos

Forgot how to spell models. Whoops.
Comment out incomplete classes
Trivial style fix
Overly large improvement commit

I've done several things in this commit (sorry). First I've worked on getting
correspondence.info and correspondence.nts working. They seem to be correct now.
Also, I've added a bin/pipeline script. The idea behind this script is to
provide an entry point for the new style classes that inherit from core.py. We
also get to skip out on adding boiler plate to every module we want to run and
get a consistent method of running stuff that is documented and uses args and
options.

I have also reorganized the utils stuff. This stuff has been useful but spread
out and causes issues when importing things. Notably doing import utils has
different effects if you are in a subpackage like 'correspondence' vs in
pymotifs itself. This is due to pymotifs not being a python module as it has no
__init__.py file. I could add one to fix this but that would require changing
the importing for every other class.

I've also fixed problems in running PdbDownloader. Doing this meant adding a
Gzip helper so we can make web requests for gzip stuff and get the unzipped
content back. This prompted a change in how the parser in webrequest helper is
called. I've changed it to now use the entire response instead of just the text.
This is more flexible but does break some previous things.

I have also commented out parts of core.py temporarily. Notably, the part that
marks a stage as done. I haven't updated the database yet and am not 100% on the
design for the new parts, so until then I will keep this commented.