Add offline transaction signing for usage on an airgapped machine.

Sample code:
```
from pycoin.tx.offline import generate_offline_data

# Run this online and transfer to USB
unspent_outputs = generate_offline_data(
    source_addresses=['SOURCE_ADDRESS_HERE', ])

# Run this offline

from pycoin.tx.offline import sign_transaction_offline

signed_tx = sign_transaction_offline(
    unspent_outputs=unspent_outputs,
    wifs=['SOURCE_WIF_HERE', ],
    coins_to=((190000, 'DESTINATION_ADDRESS_HERE'),),
    expected_fee=10000)
```

I haven't tested this very much, I mostly just translated existing code so that it'd be easy to pass data to an offline machine running pycoin. It seems to be working but this should be tested thoroughly before use in production.

Feedback/changes would be much appreciated.