create BoxFactoryInterface to provide a easy way to change Box class imp...

Imagine library has `BoxInterface` interface but there are no way to change implementation that is used by Imagine. In my library that depends on Imagine I would like to change `Box` implementation, but there are no clean way to achieve this. So I have provided `BoxFactoryInterface` that can be injected to Imagine object. There are no any BC.