simplifying message serializer
updating comments in scheduler functions
comment updates in util
adding support system for process timeouts
define-process updates

it was a bit silly (IMO) to have to pass the `process` var to each
operation in the define-process body. so the operations (namely `self`
`receive` and the ALL NEW `after` (used for timeouts)) are now defined
as macrolets that wrap the define-process body, so

    (define-process process
      (receive process
        ((x) (format t "x is ~a~%" x))))

becomes

    (define-process printx (process)
      (receive
        ((x) (format t "x is ~a~%" x))))

Note the absense of `process` in the receive macro. This makes the
receive/after macros feel more tightly integrated with the process and
since they are defined while running `define-process` there's no need
for implied lexical variables, it just uses the `process` var binding
passed into the arglist of the define-process call.

a note on after:

    (define-process impatient (process)
      (after 1000   ; time is in MS
        (format t "Ugh, you took too long...~%")))

This process will kill itself after 1000. `after` will always kill the
process if the timeout value is hit, but allows adding in a body for
doing any cleanup.