added __enter__,__exit__ methods. enter pushes the current PWD and exit pops it back to self.path