Split RequestListeners apart from ServerState

We had a confusing situation before where ServerState was both
a mutable field in ReadOnlyServerEngine, and attached to State
and modified there between commands. The modifications made
during commands by ServerEngine were never propagated back
to ReadOnlyServerEngine.

This splits it up so that RequestListeners is a mutable field
in ReadOnlyServerEngine which is frozen and handed off to
ServerEngine with each request; and ServerState is only the
extra state that ServerEngine sticks on sbt.State, and is only
modified by changing what's on the sbt.State.