Adding test data file.

Adding `primates-rev-comp-error.fasta` file to the test data directory.
This file is the same data as in `primates.fasta` except the Homo sapien
sequence has been reversed and complemented.
Updating `align` module.

Adding `align` function, which aligns two sequences using `mafft` if
available, or uses the `global_align` function if `mafft` cannot be
found.

Updating `global_align` to handle the input sequences as any character
iterator. This allows the caller to pass in strings, lists, or
SeqRecords. Also, updating to strip gap characters from input sequences.
Adding a `gap_char` argument to allow this.

Adding `gap_char` argument to `trace_max_score` function.

Tests in `test_align.py` are passing.
Updating `messaging` module.

Renaming `_LOGGING_LEVEL_ENV_VAR` as `LOGGING_LEVEL_ENV_VAR`.
Adding `get_reverse_complement` to `sequtils`.

Adding `get_reverse_complement` funcion to `sequtils` module.
Adding functions to `functions` module.

Adding `get_new_path`, `is_executable`, and `which` functions to the
`functions` module. Adding tests of `get_new_path` to
`test_functions.py`.
Updating `seqstats` module.

Updating all the distance functions in the `seqstats` module to use the
`align` function from the `align` module, rather than the `global_align`
function. This required removing the `similarity_matrix` and `gap_cost`
arguments from all the functions, and updating them to pass SeqRecord
instances to `align` (previously were passing strings to
`global_align`).

Updating tests in `test_seqstats.py` to reflect the use of SeqRecord
instances rather than strings. Tests are passing.
Adding `TemporaryFilePath` to `fileio` module.

Adding `TemporaryFilePath` class to `fileio` module, which allows temp
files to be created by `with TemporaryFilePath() as` statements, and
will be deleted when the statement is exited.
Updating logging levels in `dataio` module.

Changing all `info` logging to `debug` logging.
Adding `seqvet.py` script.
Adding import to `test_functions.py`.

Adding needed import of `SeqSiftTestCase` to `test_functions.py`.
Fixing import error.

Moving import of errno from utils.__init__ to `functions` module.
Fixing test file error in `test_functions.py`
Updating `align` module.

Adding `MafftAligner` and `MuscleAligner` classes. Renaming
the `align` function to `align_pair`, and adding new `align`
function, which performs multiple sequence alignments.

Adding `get_aligner` function, which handles the logic of looking for
alignment executables in PATH, and returning an instance of an aligner
class. This is called by `align` and `align_pair`.
Adding `ExternalToolNotFoundError` to `errors`.
Updating `TemporaryFilePath` class.

Updating `__exit__` method to check to see if the temp file still exist
before trying to remove it.
Adding `arg_is_executable` function.

Adding `arg_is_executable` function to `argparse_utils` module.
Adding `get_without_gaps` function to `sequtils`.
Updating `seqstats` module.

Adding an `aligner_tools` argument to all sequence-distance functions.
This specifies of prioritized list of external alignment tools to be
used for alignment. Also, adding `do_full_alignment` boolean argument
and `full_alignment_out_path` argument to `summarize_distances`
functions, which can be used to perform a full multiple sequence
alignment prior to calculating sequence distances.

Updating and adding tests to `test_seqstats.py`, which are passing.
Updating `align` module.

Fixing `get_aligner` function to preserve priority of `tools` (using
list of tuples rather than dict to preserve order).

Also, fixing bug in `MuscleAligner`: changing `shutil.mv` to
`shutil.move`.

Also, changing `info` logging to `debug` logging level.
Fixing import error in `argparse_utils` module.