Woah, lotsa changes:

- introduce SampleFrame in core (i.e., multi-channel signal paths)
- fix all sources, processors, sinks to deal with SampleFrame
- introduce frame pools for SampleFrame reuse (i.e., avoid frequent allocations)
- introduce processor context for state global to a sources/sinks/processors graph (e.g., sample rate, # of channels)