Refactor and cleanup

This PR includes the following:
* Overall refactor of the module to better support the added features
* Full docstring documentation
* Additional tests
* Two new features/changes:
    * The code now properly checks errno if the call to setns() returns -1.  The errno data is raised as an OSError
    * The context manager's constructor, now takes an optional argument allowing for a different path to the /proc file system. 
        * This is useful in a containerized environment as the hosts /proc may be bind mounted into a container at a different location