Finalize autobridging implementation (RIPD-179):

* RIPD-486: Refactoring the taker into a unit-testable architecture
* RIPD-659: Asset-aware offer crossing
* RIPD-491: Unit tests for IOU to XRP, XRP to IOU and IOU to IOU
* RIPD-441: Handle case when autobridging over same owner offers
* RIPD-665: Handle case when autobridging over own offers
* RIPD-273: Groom order books while crossing

Additionally, add support in LedgerEntrySet to allow transfer fees
to be specified by calling code instead of being calculated by the
transfer functions:

* Implement new "issue/redeem" model for IOU movements
* Implement new "transfer" model for IOU movements

Clean up signature verification logic in the main Transactor.

Reviews: @JoelKatz, @rec, @vinniefalco but everyone is welcome to get in on the game.
You don't need two if statements:


     if (rate != QUALITY_ONE &&
         from != to && from != issue.account && to != issue.account)
         return Rate (rate);
     else
         return Rate (QUALITY_ONE);

or even:

     auto useRate = rate != QUALITY_ONE &&
             from != to && from != issue.account && to != issue.account;
     return Rate (useRate ? rate : QUALITY_ONE);