Change order which I'm going to tackle tasks left  to do.
Added a TestObjectBuilderBuilder class - curently just creates a new class with same properties as class passed in.
TestObjectBuilderBuilder now produces a sub class of TestObjectBuilder.  Implemented a simple Build() method in TestObjectBuilder that will just instantiate the product class using the zero argument constructor.
Break long line into two.
Add method to initialise builder properties when builder is constructed.  Use generics instead of passing in type to TestObjectBuilderBuilder.
Refactor TestObjectBuilderBuilder to use generics instead of passing a type variable around.
Add method to initialise product properties after instantiation.
Only add properties to builder if we're able to set them on the product.
Added a first simple unit test for TestObjectBuilderBuilder.
Add CreateNewObject method that can accept a list of tuples.  Will implement later to use to construct products that don't use a zero arguement constructor.
Replace first TestObjectBuilderBuilder unit test with two tests to make the tests less brittle.
Added tests to check that Builder has the same public read/write properties that product has.
Add test to check that builder has a property with a public setter when product has property with private setter.
Factor code that gets name, type and accessibility for property into separate function.
Use GetListOfPropertyNameTypeAccessibility to remove duplication of code.
Add first iteration of functionality that will allow the creation of products that require constructor arguments.
Throw exception when a constructor argument has the same name but different type to a property on the test object.
Test that TestObjectBuilder does not have a property corresponding to a property on the product that doesn't have a setter.
Factored code that decides which properties to add to the TestObjectBuilder into a separate function.
Remove todo comment.