We should add `ve.dm.Model.static.allowedTypes` to specify which types that aren't in `.static.matchTypes` are also allowed to be present. It should take the following values:
- `` to allow no other types (default)
- `null` to allow any other types
- array of `string|RegExp` specifying other types to allow
We should then get rid of extension specific types and the `registerExtensionSpecificType( /^mw:/ )` call.
Note that this differs from the current behavior: currently, non mw:-prefixed types are allowed but no extra mw:-prefixed types are allowed. This change disallows all extra types by default, even non-mw:-prefixed ones. This probably isn't a big deal.
This will allow us to support `mw:Error`, and hopefully allow us to get rid of the matchFunction hack in `ve.dm.MWTransclusionNode` (or at least make it less hacky).