test.py: add test_overtones

This is to test the splat.gen.OvertonesGenerator class.
_splat.c: refine Fragment.normalize docstring

The same gain is applied to all fragments when normalizing, so
the relative difference in levels between channels is preserved.
add splat_001.py: noise -- 440Hz -- noise again
add splat_002.py: rain-like noise with C major chord
_splat.c: support 24-bit in Fragment_import_bytes
gen: re-factor Generator.run and ._run

* make Generator._run the abstract method and .run
  the standard main method
* add gen.SourceGenerator to implement ._run based on
  a splat.sources source function
* tweak arguments passed to Generator.run and ._run
  (interface hasn't changed as far as client code
   is concerned with existing Generator classes)
* re-use base methods more often than with previous
  design (SineGenerator and OvertonesGenerator share
  the same SourceGenerator ancestor)
_splat.c: add square source + tidy-up

* add `square' source function to generate a square wave
* add `min' and `max' macros
* tweak code formatting
splat: add sources.square and gen.SquareGenerator

* import _splat.square into splat.sources.square
* add gen.SquareGenerator to generate square waves
* splat.gen: update docstrings
* splat.gen.ParticlePool: remove noisy log message
_splat.c: add `triangle' source function
splat: add sources.triangle and gen.TriangleGenerator

* import _splat.triangle into splat.sources.triangle
* add gen.TriangleGenerator to generate a triangle wave
doc/splat.rst: add new generators and sources
gitignore: add *.pdf
doc: tweak intro + add splat-foot image
splat/gen.py: tweak docstrings + add default frag=None

* update the docstrings of Generator and its sub-classes to
  reflect the latest changes
* add Generator(frag=None) and automatically create a default
  Fragment object if frag is None
* add a link to the `sources' section in SourceGenerator docstring
test.py: add test_gen_frag + use default Fragment

* add test_gen_frag to check the Generator default Fragment
  object is created as expected
* use default Fragment object in other test cases
doc/splat.rst: fix typo
splat/interpol.py: review and improve docstrings
_splat.c: improve accuracy of square and triangle

Use absolute time to work out true sampled value based on ideal
function, instead of repeating identical periods with fixed
number of samples.  This avoids rounding errors which would cause
high frequencies to be completely off.
test.py: add test_square and test_triangle
build-0005