Added LazyTest
Fixes for TypeHelper

Fixed CreateOrDefault
Added CreateOrFail - returns an object created by the default
constructor, or the default value of a value type, throws if the type is
not a value type and doesn't have a default constructor.
Fixed Lazy - passing all tests
More tests for Lazy

Making sure I didnt screw it up in some subtle way - and it's all ok.