schema/types: split out Exec to its own type

`App.Exec` parameters and `EventHandler.Exec` parameters should undergo the
same validation.