I removed the need for `next_class`

It comes with the cost of a small overhead at the context manager init since we create a path object a second time but I believe it's compensated by the fact we avoid a call to self.next_class everytime.

Unit tests pass, and I added one to test how it works with the `with keyword`. I also added an usage example in the docstring.