SampleTable, RingBuffer (for input processing), and a few very useful helper classes

See `TonicCore.h` for 2 new classes:

- `TonicDictionary` is a templated container class that makes it easier to work with `std::map` for registering objects by name

- `TonicSmartPtr` is a templated, reference-counted smart pointer since we've using the same code for all of them so far

Changes to a few other things:

- `TONIC_DEBUG` is now on by default for the Xcode project debug build of TonicLib. Easier to see what's going on while working, and you don't have to remember to turn it off when building for Release.

- `TableLookupOsc` allows setting a `SampleTable` in-place. Subclasses should use registered `SampleTable` objects (like `SineWave`) to reuse the same static data between instances. Examples to come for setting in-place.