Ports: Add Support For New Syntax

- Fix alignment issue in rtosc.c
- Refactor Header lib into separate files
- Update example code
- Clean sugar macro library
- Properties stored as null ('\0') delimited string
- Midi table adjusted to work with new scheme
Minor Retouch of Core Tests
Add Undo & Serialization Support

- Ports now spawn messages to support undoing actions
- Port trees can now be serialized through clever capturing of replies

While it is not perfect, the serialization works at a reasonable speed and it
requires no extra user code on top of defining the ports.
The main feature that is needed to make this utility truly usable would be some
special handling for array parameters.
Right now each element within an array field gets its own message within the
bundle which results in a waste of at least 11 bytes (which builds up quickly
considering how many array elements there are and how small the elements are
(and this waste can be much larger depending upon the paths involved)).
The larger cost here though is the cost in terms of time, as array ports take up
an inordinate amount of time to be processed.

Per the undo actions, it is still unclear if the messages exist at the right
level and it is unclear how large loading operations should be taken care of.
There will likely be some interactions between this and the serialization system
in the future.
Add Save/Load to Complex Example

- A single savestate can be generated and reloaded
- This seems to work for all parameters with the possible exception of the gate
  toggle with minimal changes