Clean up some logic and add some isXRP
Use Issue in Node.
Restrict access to PathState variables.
Line length and readability cleanups.
New PathCursor stores path calculation data during rippleCalc.
Extract methods PathCursor::node() and PathCursor::previousNode()
Move rippleCalculate to being a method on RippleCalculate again.
Extract method RippleCalc::addPath to remove duplicate code.

* It took me four tries to get this right because of the error handling!