Massive code runthrough. Fixes, improvements, and more!

Summary:
========

- Where possible, backwards compatibility has been preserved. There
are a few cases where interfaces have changed to be more strict with
acceptable data types, but in these cases it was deemed that the
permissive interface was both unecessary and probaby unused.
- Moving, where possible, toward doing as much module-time
computation as possible, and as little run-time. The primary thing
this means is that there will be more reliance on the structured
helpers and less on plain subclassing.
	- The most visible part of this change is that most classes now
	supply `static_length` as a class-scope variable, rather than
	computing it every time via `total_length()`.
	- This also means that all the dynamic classes (`DNASegment` and
	`DNABinary`) have been deprecated. It is intended that the class
	building helpers in `genetics.dna.structured` will be used
	instead.
	- New base versions of the dynamic classes are available
	(`DNABaseSegment` and `DNABaseBinary`). These are similar to the
	deprecated versions, but don't provide a total_length method.
	Instead, they assume that subclasses will provide a static_length
	member.
- Various performance improvements
	- Significantly reduced temporary object creation throughout.
	Removed many unnecesary calls to iter(), tuple(), list(), and
	others. This is a breaking change, as now masks are required to
	be iterators or generators.
	- Unless using the old, deprecated `DNASegment` or `DNABinary`,
	lengths are no longer computed recursively. Instead, they are
	computed at class creation time. This applies primarily to the
	structured DNA types available in `genetics.dna.structured`.
	- All DNA types now use `__slots__` to keep memory footprint as
	small as possible.
		- This hasn't taken effect yet, as `score` can't yet be a
		slot. A future, backwards-incompatible release will change
		the interface for computing score, allowing it to be a slot.
- Added some more commenting. Not yet comprehensive.
- Fixed tests that were broken by this release, but haven't added more.