Tweaks

This branch needs some real-world testing and code review. It focuses on improving performance. Changes include:

Do old pathfinding against the last closed ledger. This helps the server better re-use nodes that fault in during the process.

Rework handling of modified ledger nodes. This makes sure newly-created nodes are shared and cached.

Nodes that fault in as a result of client requests are preserved by avoiding keeping a separate ledger instance. (Previously, client requests used an immutable snapshot that was not re-used for applying transactions. Now that snapshot is re-used.)