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).