build-0010
_splat.c: implement signals in Fragment.mix levels

Now the levels used in Fragment.mix can be signals with time
reference based on the destination Fragment instance.  This
allows modulation over several small Fragments such as when
mixed by a Generator.

+ add splat_zero as a module constant Python object with
  the value of 0.0 for default object argument value
splat.gen: fix kw in SourceGenerator + add mix_levels

* do not pass **kw to the source in SourceGenerator as
  built-in sources do not accept keyword arguments
* add mix_levels kw to Generator.run to pass to
  gen.frag.mix to enable global amplitude modulation
add splat.tuplise utility function

The spla.tuplise function takes a single object and a dimension
and returns a tuple of this dimension with references to the
object.  This is convenient when using the same signal as the
level for several channels, for example.
_splat.c: allow levels to be a single signal instead of tuple

Alow levels to be either a single or a tuple of signals (floats,
callables o fragments).  When a single level is provided, the
same is used for all the channels in the associated fragment.
splat.plot: add frag() to plot a fragment
_splat.c: add origin to signals and sources

This is mainly to enable continuous signals across several
fragments that are then mixed at different absolute times.
Previously, the scope of signals was limited to the fragment into
which a source or any other code was running.

* add origin attribute to splat_signal to set the origin sample
* the origin time must be > 0.0
* _splat.Signal: add optional origin argument
* fix splat_signal_func to start on an arbitrary sample number
* use memcpy and fix splat_signal_frag to start on an arbitrary
  sample number
* update Fragment.mix, Fragment.offset, sine, triangle, square
  and overtones with origin and the new signal iteration style
splat.Signal, splat.gen.*: update calls with origin

* add origin argument to splat.Signal
* pass start time as origin in splat.gen.Generator._run

+ fix splat.gen.Generator.levels.setter to accept any object
test.py: update with origin arguments