detail::factory_base documentation.
detail::factory_base refactoring.
factory interface was changed + factory::helper test suite refactoring.

detail::factory_base:
    instance() -> instance_optional()
    factory() -> factory_optional()
    instance() implementation
    factory() implementation