Use form validation errors for important UI feedback (#11095)
* Add base classes for prevalidation Form and rich validation errors
- Prevalidaition on forms allows throwing errors on the initial form
display, before the user submits the form.
- Rich validation errors gives non-field error message types (info,
error, warning, etc) and header/title text
* Refactor project create form to use form validation errors
Instead of using notifications without a database, use form validation
errors to raise error states on specific forms, or outright disable
them.
* Add logic for team, owner, and SSO validations
* Invert conditional to avoid `not any()`
* Clarify some of the prevalidation form internals
* Fix is_valid call
* Fix not implemented throw
* Add tests for form prevalidation
* Pytest tests -> unittest tests