vmnetx-server: Replace gtk.main() with glib.MainLoop()

gtk.main() initializes components other than the event loop, some of which
require a display. This is a problem in an headless environment.
vmnetx-server: Add shutdown code

Add a safe way to handle signals to shut down using the self-pipe trick.
vmnetx-server: Accept a config file instead of cmdline arguments

Accept a location of a config file instead of a list of options
in the command line.
Convert LocalController._ensure_permissions to class method

_ensure_permissions can potentially cause the process to restart.  The
server will eventually create LocalControllers on demand, and will need to
ensure that these restarts can only happen during server startup.  Move
permissions checks to a class method which can be called during startup,
rather than performing them during LocalController instance
initialization.
Change arguments of controller initializers to keyword args

The server needs to create Packages from a worker thread, outside of
LocalController.initialize(), and then pass them to
LocalController.__init__() instead of an URL.  Restructure Controller
initializer arguments to support an optional url parameter.
Move package creation outside of LocalController initialization

Package creation is done prior to the rest of the LocalController
initialization in order to confirm that the VMNetX server can connect and
authenticate with the VM server before returning a token to the user,
and to move the synchronous creation outside of the main event loop.
vmnetx.controller.local: Add viewer_password as optional init argument

When tokens identifying local controllers are generated before the
controllers themselves are initialized, adding the viewer_password
as an option when instantiating a controller allows the pre-generated
token to be used as the viewer password.
vmnetx.server: Add multiple VM support

The VMNetXServer class can now support the launch and management of
multiple VMs.  A simple Flask HTTP server acts as a control interface
and accepts requests to create tokens.  Local controllers are created on
demand when users connect to the server.
HttpServer: Retrieve secret key from request data instead of headers

The request data is already expected to be in json form, so the secret
key can be retrieved from the body instead of the headers.
vmnetx-server: Add options to run the HTTP server at defined host and port

The HTTP server by default runs on localhost on a predetermined port. The
option to define the host and port of the HTTP server makes it possible to
control the server externally.
vmnetx-server: Add simple test client

The new options allow the script to attempt to create a token at a given
server.
vmnetx-server: Enable threading for the HTTP server

The HTTP server should be able to handle multiple requests simultaneously,
so enable threading.
Merge branch 'multiserver' of github.com:dayoonc/vmnetx

Conflicts:
	README.rst
	vmnetx/controller/local/__init__.py
Fix pylint warnings
vmnetx-server: Fix missing imports
vmnetx-server: Append proper endpoint to base URL in --server
vmnetx-server: Reduce logging in client mode
vmnetx-server: Provide default for --server option