Continuing TransactionSign refactor (broken!) [RIPD-480]

This refactor moves ledger access into a single object that can
be mocked.  This paves the way for unit tests that are not dependent
on the ledger.

The implementation is currently *broken*.  There are massive failures
of the NPM tests.  I'm committing this code so I can work on a
different project for a while.  But I'll be back to fix this up