Ignore build, dist directories
setup.py: run 2to3 if running under Python 3
fasta.py: use the right maketrans on Python 2 + 3
Open text files in text mode

The implicit decoding of UTF-8 should be fine for FASTA files, and this allows
using string literals everywhere instead of bytes literals (which aren't
available in Python 2.5).
fasta.py: fix doctest for hash randomization

Python 2.7 adds an option to randomize hash seeds, and this is enabled by
default in 3.3. The natural ordering of a dict now changes every time the
interpreter is started, so don't depend on this in a doctest.

Explicitly sort the items of a dict in order to compare against expected
values.
fasta.Fasta: override items() method for Python 3

In Python 2, items() essentially loops over the keys() of the dict and adds
a (key, value) tuple to a list.

In Python 3, the items() method returns a view of the underlying dict's data
and isn't affected by the overridden keys(), iterkeys() and __getitem__.

This can probably be removed in the future by subclassing
collections.abc.Mapping instead of dict, but this requires Python 2.6+.
NpyFastaRecord: decode characters from bytes when appropriate
fasta.Fasta: extend collections.Mapping instead of dict

Extending dict isn't necessary to behave like a mapping object, and in fact
has some overhead since the Fasta object needlessly stores data that's set up
by the superclass. It was also necessary to override as many methods as
possible to avoid accidentally referring to the superclass's data.

Now, extend Mapping and fill in the important methods:

* __len__
* __iter__
* __getitem__

Everything else will be provided by the Mapping abstract base class, including
e.g. keys/iterkeys/viewkeys (Python 2) -> keys (Python 3).

Because of this, pyfasta now requires Python 2.6+.
records.py: use context managers for open() calls

It's an extra indentation level, but avoiding an explicit
file_obj.close() is nice.
split_fasta.py: use iterkeys instead of keys

2to3 converts dict.keys() to list(dict.keys()), which isn't necessary for
this usage.
split_fasta.py: open files in text mode

Also make sure that file handles are closed, either by using the open() call
as a context manager or by explicitly calling file_obj.close().
Merge pull request #10 from mruffalo/master

Support Python 2.6 - 3.3 thanks to @mruffalo