Now, a single solver instance is used for the entire server.
Questions/TODO:
1. Will this cause problems with concurrent clients?
2. There doesn't seem to be any way to do cleanup actions when
the server is shut down, so the solver will not be shut down
gracefully. Is this a problem?
This version requires the file that's in scope to be provided as an
argument. It loads that file on startup, and then provides only
commands that don't change that module context. This means that it can
be used in a stateless load-balancing situation.