add FASTA format support to I/O registry

~~**Not ready for merge:** This pull request overhauls how FASTA I/O is performed in scikit-bio, and the underlying readers/writers have been rewritten in the process to better support the usage of scikit-bio's sequence data classes. I'd like to compare performance of current vs new implementations before merge.~~

Edit: Some light performance testing can be found in [this notebook](http://nbviewer.ipython.org/gist/jairideout/8e68fa66f63e0dc28bff).

Added the following FASTA file support:
  - Detailed docs describing the format  
  - Automatic file format detection via a FASTA sniffer
  - FASTA files can be read into and written from ``SequenceCollection``, ``Alignment``, ``BiologicalSequence``, ``NucleotideSequence``, ``DNASequence``, ``RNASequence``, and ``ProteinSequence`` objects via ``read`` and ``write`` methods
  - FASTA files can be streamed into and out of memory via ``skbio.io.read`` and ``skbio.io.write``. These generators yield ``BiologicalSequence`` objects (or subclasses)

Deprecated the current readers/writers for removal in scikit-bio 0.3.0. Please see the changelog for more details.

Fixes #678 #633. @ebolyen can you take the first pass through this?
zip might be cleaner, 
```
try:
    seqs = [_ for _ in zip(10, gen)]
    if len(seqs) > 0:
        return True, {}
except FASTAFormatError:
    pass
return False, {}
    
```