Implement 'lazy DI' pattern, fix registry implementation

This pattern allows the registry to allow partial overriding of dependencies very easily by using default values for dependencies - then you can override specific parameters by using named parameters without having to specify a value for every single dependency. Of course you should still mock all dependencies when testing.
Make default config more sane (include/exclude common paths by default instead of everything)
Partial implementation of 'Fiat' alternate deserialization engine.

Fiat allows much better diagnostics as to what is being loaded and what's been changed on items. It's currently a work in progress hampered by vs2013's crappy debugger :)
Fixed detection of changed fields