We need NewXXX methods for private types

If a library is using private types as part of it's public API (e.g.
returning private types that satisfy an interface) then we need a way to
generate instances of those types to setup the expectations.

This needs to work for non-struct types too (i.e. we need to return an
appropriate literal value for the type).

Start by creating a scenario to show how we want things to work ...