Implements a communication protocol service for game engines.
The protocol implemented resembles that of the Universal Chess
Interface protocol with only minimal adaptations. Therefore, this
class provides a service that reads UCI commands from the standard
input and writes replies to the standard output.
Sets the transposition table to use by the service.
This must be a reference to the same cache object the engine is
using in order for the service to work properly. Note that without
a cache this service won't be able to output any engine search
information like the principal variation or the move to ponder.
cache - A cache object or null to disable
the transposition table