Refactor Reactor API interface

Calling actions => messages now

Actions represent a semantic operation on the entire system, actions can
be composed of multiple messages

Remove the notion of the actionQueue and eliminate this state from being
tracked inside the reactor.  Instead, make the cycle method accept an
array of messages.  This still allows implementing a queue system by
wrapping the base implementation of Reactor with a queue which calls
`Reactor.cycle` whenever it needs to flush the queue.  This approach
makes the reactor more naive, less stateful and easier to extend in the
future.

This also elimates the need to do

```js
reactor.inputStream.write(msg)
reactor.react()
```

instead you can just write to the input stream or call
`reactor.cycle(msg)` and both will accomplish the same thing.  The idea
of exposing both allow easy inter-operability with streams and a
simplier programmatic interface to extend the base reactor

In the future we may want to consider only exposing the programmatic API
and then having a class that extends the base reactor to expose the
stream interface