refactoring and more warnings from TypeCatalogue

Some opinionated refactorings and I've added warnings when loading badly formatted assemblies (which includes non-managed assemblies) and when failing to load all types from loaded assemblies.

I've also changed `TypeCatalogue` so that the constructor doesn't do all the work with the filesystem etc. which I think is a bad pattern. That work now occurs in a `Load()` method.

Each commit is quite clear in it's purpose so can be reviewed separately if that's easier.

All open to discussion.