Add Path.eachSubPath

Fixes #52.

Additionally, I added some basic object functionality to `Path` and `Link` - comparison and hashing and reprs.  I didn't convert everything from `epsilon.structlike` to `characteristic` because the resulting API isn't quite the same (characteristic requires keyword arguments to `__init__`).