Added Database abstraction

Added database interface abstraction to allow mocking out for testing.
Add unit test and coverage for server code

Added support to run unit tests and generate code coverage results for
server code.  You can run npm test to run tests for client and server
code.  Separate npm scripts are available to run each individually, see
package.json.