messageProxy supports out of order messages

- messageProxy now caches messages if they are received out of order
(commonly occurs when debugging)
- converted BaseCommand[] into a BatchCommand, which contains a single
ruleId and a list of commands
- added 'me' variables, which provide an alias for the current user.
me+1 represents the next user's alias, me-1 the previous, me+2 the next
from the next etc (these can be used for current user relative
calculations)