Better circular dependency handling

Better circular dependency handling so property injection ALWAYS works with circular dependencies and property injected classes are always properly injected prior to being passed to the constructor of a constructor injection. Hence you can have classes that use constructor injection that can use any instances with circular dependencies passed to them as long as they are using property injection.
The way I implemented it was simply due to not wanting to touch too much stuff, and not having a good enough understanding of how all the activation stuff works. The most important property of what I did is making sure that all the properties are properly injected BEFORE anything is passed into a constructor injected object. I am sure there is a better way of doing this, and you guys who know a lot more about the internals can probably do it better and cleaner. The main reason I included my crash test code was so you would have something that explains the scenario I was trying to solve, so my code would work. It really does need to get moved into a better unit test; it is possible the tests I wrote already cover it, but I left the crash code in there as an example.