Began work on abstraction layer for the filesys

The abstract files and directories are used as a kind of indirection to the
underlying filesys when normal operations are in progress. Their utility will
be apparent when operations are performed on a Filesystem Expectation that
tracks the future state of the filesys. When operating in this mode, it should
be possible to run the execute() methods of all actions without them touching
the underlying filesys.

While writing docstrings, did some fixup to Enum comments to use the commenting
style to match the salve.filesys docstrings in their use of the prompt '>>>'
when including python in a docstring.
More fleshing out of the abstract filesys

Added chown, chmod, exists, touch, and mkdir, and a simple Filesys object with
capabilities including 'copy' and 'lookup' at a path.
Also improved comments about symlinks and added an AbstractLink type (subclass
of FilesysElement, of course). Removed unnecessary `pass` method bodies for
abstract methods with docstrings as their bodies.
Add initial implementation of a ConcreteFilesys

This is a Filesys which passes transparently through to the real, underlying
filesys. Should be a drop-in replacement for the calls to shutil and os
throughout the code. Add a failover constructor type to filesys lookups.
Testing required some minor adjustments to the FilesysElement class hierarchy
to be py2/3 compatible, embedding a small part of the 'six' library, provided
under the license and copyright of the six project. Extensive work on the
testing. Made CreateActions start using the Concrete FS.
Switched from OOP filesys to lightweight version

Rather than implementing various filesys interactions by wrapping paths in
objects that describe their types, using a new approach more similar to the os
and os.path modules, in which filesystem elements are represented solely by
their paths.
Move existing ancestor check from utils to filesys
Convert actions to take filesystem as an argument

Filesys is now an argument to action execution and verification. The root
action verification is done with the old real filesystem value from
salve.filesys, but in the future it can be preceded by explicit verification on
a virtual filesystem.
Actions now rely 100% on the filesys, not using 'os' directly for anything. Also
added a locations alias for 'os.path.join' to make this removal of 'os' easier to
curate.
Recover test coverage after switchover to filesys

Required adding some testing to copy and chown actions, and a fix to the error
printing for DirCopy on unreadable source dirs.
Merge branch 'feature/abstract-filesys' into dev