ContainerFactory: rewritten to humble class (BC break)

- class name is always generated
- user must provide code generator