Wrap all calls to defrecord within defonce blocks.

When a defrecord form is re-evaluated, it creates a new Java class for
the record which is not .equal to the previous record, even if the
content of the defrecord form is unchanged. This can cause strange 
behaviour when instances of the old record fail to be recognised as 
instances of the new record. Guarding defrecord forms from re-evaluation
mitigates this issue.
Breaking change - control-bus-get may now return a sequence of vals.

Modify control-bus-get to return multiple vals when getting a multi-channel
control bus. If passed a numeric index, functionality remains unchanged.

Add new function control-but-get-channel which will only ever return a
single value.
New function - control-bus-fill!

Fill a sequence of control bus values with a specific value. Useful for
resetting control busses or for setting defaults.