Rework to correctly use core.py

I removed the boiler plate at the bottom that is taken up by bin/pipeline and
I've fixed the inheritance.
Add a transform method to core.py

This is useful when having to do things that go from pdbs to pairs of pdbs or
filter out pdbs.
Cache chain data

We should cache the chain data so we don't have to re-read stuff.
Add a Downloader that is consistent with new style

I'd like all parts of the pipeline to be run with a call through bin/pipeline.
Towards that goal I've created a new version of the downloader which has the
same interface as core.Loader. This makes it possible to run the downloader
using bin/pipeline.
Use utils in pipeline script

There is a util for getting rna containing Pdbs so we should use that. It does
not require loading up the global session in model so is a bit cleaner to load
up.
Fix importing of pdb helper
Add loader for experimental mapping information

This loads up the mapping between the experimental sequence and the observed
sequence. This will be useful for finding unobserved residues and for aligning
different structures.
Up insert_max to 5000
Add some stages to get experimental sequence data

This is very useful when we are mapping between different structures as well as
determining what parts of structures are unobserved. In order to do this I've
added some things to core. I also renamed the previous experimental_mapping
stage to be part of a large experimental information stage.
Add utility function to list all downloaded pdbs

This is useful for running the pipeline on only the things we have already
downloaded. The function allows selection of things that have any combination of
cif, pdb and pdb1 files. By default it requires cif and pdb files.
Remove unused imports
Use utility known function

Sometimes I want to run the pipeline on only the known files. This adds such an
option.
Catch errors due to unhandlable symmetries

Some cif files have symmetries that we don't deal with yet. We need to catch
these exceptions to process all pdbs.
Don't log errors twice

In session we should log a failure and reraise, leave the logging of the error
itself to a different level.
Fix typo

NrClasss should be NrClasses
Must pass recalculate along

I didn't pass the recalculate flag to must recalculate as I should have. This
meant things which we had already computed were not forced to be recomputed.
Only map things from 1_555 and model 1

This is limited but consistent with exp_seq/positions. Future work will have to
expand this code to something better but this does allow a start and will work
for many interesting structures. If we did not do this then we go errors when
trying to work with a chain that does not exist.
Use only unique chains
Remove unneeded utils main function

The main stuff will be handled by bin/pipeline in the future so I don't want to
use utils.main anymore. Thus I've removed it and one instance if it being used.
Deal with chains that have no valid mapping

Some chains do not have a valid mapping. This does happen sometimes but they
seem to be uninteresting chains, things like antibiotics and the like. I think.
This commit adds error handling for such things. However the errors thrown are
very generic so this should be fixed and the handling fixed as well.