Add timestamps to console log output

Change-Id: I7b84c45ab502fcd97e89b30550f6dbc84da397c1
Start converting to new websockets and API server architecture

Sweeping change throughout. Summary:
* new websocket class used in place of framedsocket for incoming client
  connections
* completely altered authentication to use the new JWT approach
    * plugins removed
    * stub for 2nd user cert mode added for use behind SSL terminating
      reverse proxy
    * TODO: code for verifying user cert and JWT have matching subjects
* session management vastly simplified (TODO: not entirely finished)
* removed most of the database interaction code and mongoose dep
* removed most of the cloud management code that's moving to the API server
  (still needs to be replaced with calls to said API server)

Change-Id: I4d5372ae7396c61ea29c8881eefb157ffe880f72
Clean up obsolete npm dependencies

Change-Id: Id2b7450f03ab002cbc96631f9618b5c81f9e8863
More progress on WebSocket conversion

Fixed authentication module.
Updated config files to include REST API fields.
Identified and commented issue in session module.
Added Q-IO package for HTTP promises.
Updated proxy module to use HTTP request for VM setup.

Currently broken; the proxy's client socket closes with error 1011
when it tries to forward the VMREADY response from the VM.
Added support for VM sessions

Changed "sessions" to "VM sessions".
VM sessions keep track of whether the user is connected to their
VM, and when they last disconnected.
Proxy now uses the SVMP REST API to create a VM session when the
user first connects, and to update the session when the user
disconnects, so the proxy can terminate expired VMs.
Proxy runs a timeout function to kick the user when their regular
session has reached its maximum length.
Fixed Protobuf delimiting issues

Client is using WebSocket (built-in delimiting), while VM is using
regular Socket (utilizes Protobuf delimiting).
Client now sends Protobuf-delimited Requests, updated debug/silly
logging to support this.
Framed socket now strips varint delimiter from VM Protobuf Response
messages before passing them to the client.
Authentication updates

SVMP Overseer no longer requires "sid" for VM Session.
Various Overseer-related fixes and changes

Changed JWT decoding to use Overseer certificate as shared secret.
Updated config files, schema, and key/cert generation script to
match the latest versions on the Overseer for consistency.
Removed old tests that aren't applicable and fixed existing broken
ones. WebSocket tests still need to be added.
Updated README and removed obsolete files where appropriate.
Overhaul server configuration

* switch back to using the nconf module
* enable command line config option overrides
* change config language from JSON to YAML for readibility
* flattened config file format and removed 'settings' sub-object
* renamed many config fiels
* new nconf-style default values system in lib/common/default-config.js
* changed validator modules from JSV/jsvutil to revalidator
  (much more popular and better maintained, same functionality)
* cleaned up schema
* changed overseer server settings to a base URL instead of separate
  host & port, stop using svmp-server's ssl enable to set use of ssl
  on overseer API calls

Change-Id: I0012a5b385feedb7a6e856bbc9c2fb851eeb68ca
Fix tests. Add fixed set of test keys and certs.

Include a pre-generated set of keys and certs in the tests directory
and point the template config at those to make running the unit tests
more reliable.

Change-Id: I168259a03bd6c143bda7ec7bd51328f372b1acc4
Allow specifying config file by command line arg

Also stops using the template for running tests in favor of a dedicated
config file at tests/config.yaml which is currently a copy of the
template but may change later.

Change-Id: I8d3302cf5ef482407747c165c2fbfdad11b451b0
Tweak config file template

To avoid any possibility of starting the server in production using the
test certs, this alters the config file template to use bogus paths for
all the cert and key fields.

Change-Id: I10ae77bf9e2293618bdef68ff8f88e3110963847
Fixes for config changes

Fixed websocket to actually create a TLS server when the option is
enabled.
Fixed default-config.js file.
Added fix for UNABLE_TO_VERIFY_LEAF_SIGNATURE error that was
rejecting client connections.
Refactored proxy module and moved variables into the "clientSocket"
object to prevent interference when multiple connections are
established.
Log authentication failure reasons

Change-Id: Ib6e8c259b9372c49223721b7178a1056e8723cae
Fixed authenticatication function

An error was introduced in the last commit that caused auth to fail
Removed Overseer URL from config files, now reads from JWT instead
Auth now compares client cert email and JWT email addresses
Revert "Removed Overseer URL from config files, now reads from JWT instead"

This reverts commit 9324aef9ad77556a1af5c4506be3895bd8c8a69f.

I prefer it to have get the overseer's URL from the config file rather
then indirectly through the token. Configuring that URL on every server
instance does not save any work since the server's own API auth token
must still be configured anyway.
Reapply parts of 9324aef9 not related to the Overseer URL

Change-Id: I3cd32500ab581e18a6ef5744bfe8884b6d1c5a6c
Revert "Reapply parts of 9324aef9 not related to the Overseer URL"

This reverts commit a271758b181096a966476189dcdffeedac57ffe4.
That part is incomplete and breaks VM Session updating.
Mods to vm-session.js were made in conjunction with this.
The changes are no longer needed so they can all be reverted.