Use another open() call as a context manager
fasta.py: change seen_headers into a set

It was previously a dict that mapped each header to None, and was only used
for membership testing. This is what sets are for.
Use __future__.print_function import

This is valid in Python 2.6, and reduces some of the code churn that occurs
with 2to3 conversion.

Also replace the old "except Exception, e" syntax.