splat.gen: add particle generator and related classes

* add gen.Particle to contain the start, end and frequency of a particle
* add gen.ParticlePool to manage a list of Particle objects
* add gen.ParticleGenerator to generate particle sounds using a
  sub-generator and a ParticlePool
  + gen-time equalization (amplitude computed before generating particle)
  + random gain fuzz parameters
  + curve method to implement statistical frequency distribution
_splat.c: add levels to Fragment.mix
splat.gen: fix Generator.levels.setter checks
splat.interpol.Polynomial: define coefs, derivative and integral

* rename .pol -> .coefs attribute as it's really the
  only the coefficients
* make .derivative a method to always return a new Polynomial
  instance (and avoid bad surprises)
* add .integral with optional constant to also return a new
  Polynomial but with integral coefficients
test: add test_polynomial for Polynomial class
add splat.plot with function to plot a spline
splat.interpol.Spline: convert all points to float
_splat.c: fix comment about PP_NARG
add documentation for particle generator
splat.gen.Particle*: review and improve API and docstrings

* add Particle.length to get the length of the particle in
  seconds
* ensure particles all fit withing the start and end times when
  creating a ParticlePool and skip slices that are too short to
  contain a particle
* add optional min_f and max_f to ParticleGenerator instead of
  hard-coded 20 and 20000
* rename ParticleGenerator._stereo_gain_fuzz ->
  relative_gain_fuzz as it's applied to all channels, not just 2
* use property to set the gain fuzz using a 2-tuple like when
  getting the value back
test.py: add cases for all splat.gen.Particle* classes
_splat.c: fix error reporting in sources
add splat.check_version to require a fixed version
test.py: require v1.1
add splat.Signal class + tests

* add _splat.Signal and import it into splat.Signal
* thin wrapper around the C splat_signal implementation
  to make it available in Python with basic iterating method
* add tests.test_signal
_splat.Signal: accept several vectors + add test
_splat.Signal: add basic sequence interface + test

Add __item__ and __len__ implementation to _splat.Signal to
iterate in plain "for" loop, get the length of the signal
and get an indexed value with random access (not optimized).

+ remove _splat.Signal.next() method as it's not needed now
+ add test case to iterate over signal
test.py: improve msg in check_multiple_md5
splat.interpol.Spline: fix polynome order n > 2

Fix hard-coded n = 2 and use argument passed in Spline instead.
This allows elementary polynomes to be of a different order.
+ fix typo in Spline._build which was only run with n > 2.
test.py: add case to test_spline for n > 2