WIP: refactor(client): Add FormView.submitter to handle generic submit-like functionality.

We have to handle submit-like functionality in things other than forms. We only want one "submission" to occur at a time, and we want to properly handle and display any error messages.

* Prevents multiple concurrent submissions.
* A new type of error is added, SilentError - an error that is not meant to be displayed to the user.
* Display error messages that are not of type SilentError.

@zaach and @nchapman - this is an idea that I have been tossing around and would like to get feedback. Does it make sense? Should submitter be in BaseView instead of FormView? Is it too complex?

Follow on from issue #887