Fix Tutorial doctest error in Windows python 2.5 due to str(float) differences
Remove some Bio.SearchIO doctest in Python2.5 due to str(float) differences
Update Bio.File.as_handle to use encodings

This commit updates Bio.File.as_handle so that when an encoding is specified,
the file will be opened using codecs.open instead of open. This is only done in
Python <3.0, since `open` in Python 3 accepts an encoding argument.
Hack for Bio.SearchIO blast-xml encoding

BLAST XML files do not specify its encoding, which may be problematic in some
Python versions. This commit forces a 'utf-8' encoding for all BLAST XML files
opened through Bio.SearchIO.
Revert "Hack for Bio.SearchIO blast-xml encoding"

This reverts commit 06cb6da1e0bb5b727f59d51b0ee4c896784cfaa5.

Seemed to break under other platforms.
Correct argument name to Bio.SearchIO.index(...)
Move core Bio.SeqIO index code to Bio.File

Moved two private classes, which requires minor internal API changes
to pass the dictionary of file format specific proxies to __init__
which is something we will need to do to use this with both
Bio.SeqIO and Bio.SearchIO anyway.
Generalise docstrings as will use for SearchIO and SeqIO
Small refactoring of Bio.SeqIO index imports
Refactor Bio.SeqIO.index(...) internals
Use Bio.File._IndexedSeqFileDict in Bio.SearchIO.index(...)
Remove now redundant Bio.SearchIO._index._IndexedSearch object
Small refactor to _SQLiteManySeqFilesDict to help using beyond Bio.SeqIO
Refactor _SQLiteManySeqFilesDict with factory pattern.

This lets us hide any proxy arguments like alphabet away from
what I want to be a neutral sequential record index class.
i.e. Refactoring to help merge indexing for SeqIO and SearchIO.
Use _SQLiteManySeqFilesDict in Bio.SearchIO.index_db(...)
Remove now redundant SearchIO indexing code
Close index files in test_SearchIO_index.py

Silences a resource warning under Python 3,
More sillyness to silence unclosed file resource warnings.
Simplify Bio.File.as_handle checking

Python 3's `open` accepts `encoding` argument, so we don't need to check for
that if it's already Python 3.
Fixes for BLAST XML encoding