add 404 middleware, error handling, and tests

This commit configures the app with a middleware to catch all requests
that are not handled by the routes and generates 404 status.  Also adds
a few error handling middleware to send the error object with the
response.  Lastly, test specs were added to the server spec file to
test the 404 middleware and error handling.  All test pass.