Add pathlib.Path.walk method

I have looked over os.walk again and I see that if we want to reimplement it, we will have to change only 3 lines out of ~92 lines. @barneygale 's example is neat, but it disregards topdown and onerror arguments, and does not handle the errors that arise during initial call to scandir and next() call to scandir iterator, which is why it is so small.

In reality, we will need to rewrite the entire walk (with minimal changes) and support it separately from os.walk. So I have even more doubts about reimplementing it now. For now, I will write more tests for the wrapper version and wait for more feedback.