Merge development to master

The current state of the `development` branch is pretty stable, IMO. I'd like to get it into master soon-ish.

The primary changes are:
- Windows demo(s)
- Universal smart-pointer usage for Synths
   - Smart pointer base class
- Input processing via RingBuffer
- Globally-registered sample tables
- Smart pointer pass-by-value fixes
- Multiple other fixes, some fairly critical

@Dewb if there are still any loose ends for Windows that you'd like to get in before this goes to master, can you tie those up (ideally in the next few weeks)? Thanks.

Linux build configuration is getting closer but still needs some attention. Personally I'd prefer to put that off til a future merge in the interest of continuing to move things forward.