Add live validation for new tickets.

Previously, the ticket details were only being validated server-side,
and a not-very-good error message was being shown when a validation
failed.

This adds client-side validation with HTML5. The `first_name',
`last_name', and `email' fields are required, and the `email' field must
conform to standards set by the browser.

This involved a bit of legwork, for a few reasons:

1. HTML5 only validates forms on a submit button click
  * For whatever reason, `$('form').submit()` does not trigger HTML5
    validation. Instead, forms are only validated on clicking the submit
    button.
  * So, a hidden submit button was added.
2. The hidden submit button can't submit the form, since Stripe needs to
   be injected.
  * So, Stripe is now injected on `$(form').on('submit'...);`.
3. This triggers an infinite loop, since we're submitting the form
inside `$('form').on('submit'...);`.
  * Instead of calling the jQuery's `submit' function, we call HTML's
    native submit. This prevents jQuery from catching our submit.

After those three changes, HTML5 form validation works with Stripe.