Make hgfs awesome

This pull request adds the optimizations that were recently added to gitfs (env/file lists caching, etc) to hgfs.

In addition, this fixes two bugs I discovered in the process of this rewrite:
* Improper detection of bookmark-based envs
* Files outside of the ``hgfs_root`` being made available using parent directory notation (i.e. ``salt://../path/to/file``)

Finally, this adds the ``hgfs_base`` parameter, to match ``gitfs_base``.

(It also adds ``gitfs_base`` and all the hgfs config params to the docs, since they were missing)


@thatch45 I have marked these changes as available in 2014.1.0. Let me know if you think they should wait and I will modify those ``.. versionadded::`` directives. As this fixes ~~two~~ four bugs though, it might be a good idea to release it with 2014.1.0, and that is my recommendation.

EDIT: additional bugs fixed:

* ``_get_ref()`` never looks at bookmarks, making it impossible to serve files using a bookmark as an environment.

* Exceptions during a pull (in a fileserver update) will cause the update() function to abort, failing to clear the fileserver update lockfile. Thanks to a bitbucket outage for helping uncover this one!