Pushed the mapping from model type -> protocol type and converting the resulting model right down to just above the provider.
Split ProviderConnection out of DefaultConnection, leaving the adapting to/from the consumer behind in DefaultConnection.
Changed CompatibleIntrospector so that it Just propagates the original exception when something goes wrong, rather than wrapping it.