New ControlGenerators and a few refactorings

#### Core Changes:

- `ControlGeneratorOutput::status` enum is now boolean `ControlGeneratorOutput::triggered`
   - We were using "HasChanged" and "HasNotChanged" before, but I think the concept is better conveyed by boolean "trigger", since it's not actually whether the value has "changed"

- Added explicit "retain" and "release" methods to `TonicSmartPointer`, refactor where necessary


#### New ControlGenerators:

- `ControlMetronomeDivider`
   - Divides incoming triggers
- Comparison operators for ControlGenerators: `== != > >= < <=`
   - Only triggers in left hand input will drive new output. Allows comparison as a "filter" for incoming data -> outgoing triggers.