Add invoice previews

cc/ @bhelx 

tests:

  - create an uninvoiced charge on an account
  - `i = Account.get('<account_code>'). build_invoice()`
  - verify `i` has the correct invoice attributes and the charge is still uninvoiced