Autofac fixes

This fixes two registration styles as mentioned in #64:

- `Register(c => CreateFoo())`
- `Register(c => new Foo() as Foo)`

In addition it now ignores registrations that aren't understood - under the old behaviour it would treat all classes as registered if it didn't understand the registration. 

The following is still not supported:

- `var foo = ...; Register(c => foo)`

I've added some tests but the test suite is crashing on my computer. I've eyeballed them in a separate project and I get the expected behaviour.