Allow setting button_label to None to prevent rendering of submit button
Modal form support.

This allows you to have buttons which open a modal containing a form.

The form is loaded in, and submitted, by AJAX. Form validation happens
server-side like all other form validation, and if there are errors, the form
is re-rendered from the server so we get error messages.

If the form submission is successful, the endpoint can declare what it wants to
happen. Currently the only option is to trigger a location.reload, but more
could be added if useful.