NEW: Add SilverStripe\ORM\UnexpectedDataException class.
This change provides more graceful handling of the case where a
ChangeSetItem is referencing a no-longer-existing class.
The new exception, SilverStripe\ORM\UnexpectedDataException, is
intended to be available for throwing whenever we have unexpected data
in the database.
It can be trapped by the relevant UIs and more graceful errors than
HTTP 500s can be provided.
Standardise template locations
Move CMSSettingsController class to SiteConfig module
Fix CMSMenu behaviour for namespaced admin sections
Split classes into one per file
Manual fixes and cleanup