Revamp FastaIO and FastqIO.

This addresses bug 22045 and also solves our (jbullard and myself)
unhappiness with the FASTA/FASTQ APIs.

[Tracking bug 21562]

[git-p4: depot-paths = "//depot/software/bioinformatics/lib/python/pbcore/": change = 119018]
Add .md5 to FastaRecord

I benchmarked last week on large (200M) contigs.  The performance
impact of this is offset by the speedup of FastaReader I got last week
from switching to reading blockwise instead of linewise.

Pursuant to this, I have made .sequence, .name, and .md5 properties so
they cannot be modified.  Imagine the mess you could get into by
modifying record.sequence, and not updating the md5.

FastaRecords are to be considered immutable.  If you want a "modified"
FastaRecord, call FastaRecord(newName, newSequence).

[Tracking bug 21562]

[git-p4: depot-paths = "//depot/software/bioinformatics/lib/python/pbcore/": change = 119108]
Add context manager support

For all reader/writer classes, you should now be able to use a "with"
construct to safely perform file closing on exit or exception.

Example:

        with FastaReader("output.fasta") as fr:
            # do something here
        # carry on... fr has been closed.

[Tracking bug 21562]

[git-p4: depot-paths = "//depot/software/bioinformatics/lib/python/pbcore/": change = 119118]
bug 22045 - update ReferenceEntry to new FastaIO api.  will take a look at excising ReferenceEntry entirely

[git-p4: depot-paths = "//depot/software/bioinformatics/lib/python/pbcore/": change = 119206]