VFS for a file system exposed via a simple REST-ish API

This implements a client for a REST interface to a file system
and a server that wraps an existing VFS and makes it accessible
via that API.

This serves several purposes:

 - An alternative to Dropbox for use in tests
 - A way to make the filesystem available to the web
   app in a browser-independent way.
 - A way to make other filesystems available to the
   web app without modifying the app itself.
Move the HTTP VFS client and server implementations into the same file

For consistency with Node's typical organization, use the
same file for both.

Also drop the 'Http*' prefix from the class names since
that just repeats part of the module name when used
by other modules.
Use underlying fs to determine whether to list the dir or read a file when HTTP VFS handles 'GET /path'

For ease of use when testing out the server in a browser
or using other tools, allow 'GET /path' to list the contents
of a directory whether the trailing slash is given or not.
Run HTTP VFS server when http_vfs module is run directly

When invoked with 'node http_vfs.js $PATH', start a new
HTTP VFS server exposing $PATH.
Prevent file system VFS from accessing files outside the root dir

This prevents http_vfs from exposing paths beyond the root
dir specified when the server is created using a FileVFS instance.

Normalize paths in absPath() and if the result is shorter than the root,
revert the path to being the root.
Enable CORS support in HTTP VFS

To enable use of the HTTP VFS server with
the web UI, enable CORS support.

 * Add CORS headers to server responses
 * Disable credentials in client requests for
   compliance with 'Access-Control-Allow-Origin: *' policy.
Add option to web UI to use HTTP-hosted VFS

Adding 'httpfs=$HOST:$PORT' will use an HTTP VFS client
connecting to a given (host, port) instead of Dropbox