Update exception types

Add a couple of new ones for filesystem structures. Changed the
inheritence hierarchy to work better with python default exceptions.
Added docstrings to all classes.
Implement zfs_destroy, improve docs

Implement the zfs_destroy function. Improve docs on existing functions.
Handle errors on /dev/zfs more uniformly.
Implement zfs_snapshot
Refactor into zfs/snapshot module
Trim unnecessary imports
Refactor top level snapshotter into a class

TODO: Add tests for AutoSnapshotter class