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