Normalise provider types before checking

This ensures, among other things, that:
 * Namespaces don't get in the way
 * Type synonyms get expanded