Add support for passing line item information to offsite integrations.

This defines a standard way to pass line item information to integrations. Individual integrations can then override the `line_item` method to suit their needs.

There are already a few integrations which support passing in line items such as auth.net sims. These should be refactored to this common interface as some point.

@odorcicd @RichardBlair