Implement direct conversion exchange rates.

Use an black box test to drive out the ledger feature. This was a
complicated feature and attempting to drive it via stubs of how I think
it should work would be prone to errors.

The exchange is basic right now and works around the money class instead
of with it. This should be refactored next.

Now that the basic logic is in place, the ledger can be unit tested more
if necessary.