Authorize.net accounts

Same as old pull request, but this time merging into a shiny new feature branch.

Also introduces free products, which are forced if the authorize.net account has never been added or has been deleted. Right now it doesn't attempt to validate authorize.net accounts, so there could be bad ones that are saved and not caught.

All tests pass.
In [1]: 0 == 0.00
Out[1]: True