Initial code review

@evanstade Please review.  Hopefully the pull request flow will let you add comments.
Looking at this again, maybe the easiest way to support custom flows is to just let them pass the <form> they want. It will be up to them to mark up the form with the right autocomplete attributes. This would allow, for example, leaving off shipping (digital goods), or providing transaction details.