[DO NOT MERGE] Return Invoices

[Don't merge yet -- Specs are still in the works]

We now support calculating return invoice taxes via Avatax and recording our return invoices in Avatax.
Also starts using the SOAP API, which has more functionality to allow us a better flow.

Note: We also now need to have a "2-2-dev" branch since this stuff isn't compatible with stock spree 2.2

Flow is like this:

- Reimbursement triggers this extension in SpreeAvatax::Reimbursement.generate
- We make a call to Avatax to calculate and store an uncommitted return invoice
- We save the result as a SpreeAvatax::ReturnInvoice in the db
- The reimbursement model performs all the reimbursements and then triggers SpreeAvatax::Reimbursement.finalize
- We make a call to Avatax to mark the return invoice as committed and then update our model with committed=true
yes, avatax will error out and we will raise in that case.  hopefully that should never happen but i'm not sure what we'd do if it did so i'm thinking we just let it raise and notify us?  I mirrored the same kind of thing below if we somehow make it past this point but have a "committed" record in our DB.