Support isolation of a 'managed' type (a Gradle provided implementation of an interface or abstract class with no fields) without serialization. The implementation is shared for types generated by `NamedObjectFactory` and `ClassGenerator`.
Change class generation to accept interface types. The interface may define mutable properties and an implementation is mixed in for each mutable property. The interface may also define `default` methods, `@Inject` properties and may extend `ExtensionAware`. Immutable properties with lazy types (eg `Property`) are not supported yet. This commit does not include any validation or documentation. These will be added in later commits.