Separate core logic from SimpleXMLRPCServer implementation.

It is useful to be able to implement a Robot Framework remote server that
uses an external event loop (eg. Twisted).  To do so, the RF remote interface
should be integrated with that external event loop rather than just using
SimpleXMLRPCServer.

This change splits the existing RobotRemoteServer class into a server that
manages the sockets, signals, starting, stopping, etc., and a new class
RobotRemoteInterface that implements the logic of the XMLRPC API that
can be reused with different event loops.

This change should be transparent for all existing users.