pathfinder implementation and usage example

Change-Id: Ie5c6969fa29e580c194db4700952ba1c7b3d5a17
docs, docstrings, tests, license, fixes

Change-Id: I205df9a5c587dc3fc80ce8d774f959fa10941c02
fucking scope, how does it work?

Change-Id: Ia74922da9737c2848d24ac172058cae6ec600dd3