replace fake file manipulation functions with vfsStream mock filesystem ...

...in specs

Currently the specs that test the filesystem adapters fake the interaction with the filesystem, with hard-coded return values and use of hacks that mean the behaviour of the method isn't fully tested (as per this discussion: #212).  This change removes these fake file functions, and replaces them with usage of the [vfsStream](https://github.com/mikey179/vfsStream) library in order to provide a proper mock filesystem.

A behaviour change introduced is the ability to have local file paths that begin with a "protocol://" form.  This was introduced in order to support vfsStream file references starting "vfs://", but I think it's a reasonable addition given that Windows file paths are also supported.