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.
Some CLI updates

Changed "volume-create" and "images" commands to instead use the
SVMP Overseer API. Other CLI commands are still broken.
Updated for new protocol changes

Updated protocol definition file.
Updated "silly" logging (of Request/Response bodies) to filter out
empty array fields because the Touch and Sensor events are now
"repeated" fields instead of "required".