Add Base Framework to factorize some functionality

* Those frameworks aren't instantiable and won't be loaded.
* One class inheriting from them will be instantiable.
* Add tests to cover those (both mocks and production).
* Add a production one which will factorize some common cases.