Harden RippleCalc against dangling references (RIPD-500)

Intentionally including 2 independent commits:
* Wrap RippleCalc into a single function.
* Add enable_if_lvalue to beast library

I ended up rewroting `RippleCalc` work to be called via a single function, eliminating the issues with passing rvalues to the constructor, so the `enable_if_lvalue` check is not necessary. (The `RippleCalc` class still exists, but with a private constructor, and no path finding logic was changed.) However, because `enable_if_lvalue` will be useful next time we encounter a similar issue (or have any doubts), it is still available in the beast library.