Made CriticalError ctor public

This is required for unit testing
ExposeSettings.Settings needs to be internal

The reason is so that we do not polute the fluent API with "Settings".
To access the "Settings" use GetSettings() extension method instead.
Rolled back TransportDefinition.Configure being public

There is no requirement for this method to be public.
Implementers can still override it.
Added a Default to PersistenceDefinition

This allows persistences to set common settings.