BIG REFACTORING: subclassed Insertional_mutant instead of using switches!

Insertional_mutant_readcount_only and Insertional_mutant_multi_dataset
are now subclasses of Insertional_mutant, rather than being implemented
as versions of Insertional_mutant with internal variables used as
switches.  This makes more sense, since they should really never be
mixed!  Overall there's slightly less code than before, it's simpler and
more modular (I think).
Also done in preparation for introducing additional subclasses for
Carette data and such.

Updated/added docstrings.
Updated unit-tests and a few other functions to use new version.

Some other refactoring of methods into additional help methods (static
or not) etc.

Also removed the convert_to_multi_dataset method and its unit-tests - it
wasn't actually used anywhere, and created an extra complication,
especially with the new subclassing setup.

The part where some Insertional_mutant methods still take an extra
dataset_name argument just for consistency with
Insertional_mutant_multi_dataset ones is a bit weird, but I'm not sure
if there's a better option.

All tests pass: mutant_analysis_classes.py unit-tests and
mutant_count_alignments.py and mutant_join_datasets.py run-tests.
New file for Carette protocol data - basic skeleton only!
Refactored sorting.
More useful multiple-gene insertion location formatting.
Basic implementation of Carette data analysis!
Added option for Carette data!