What ActivityImpl child should look like IMHO
* ctor does nothing more than create a class instance
* all fields can be set by chainable setters
* start() has no parameter
On the S4U side, we should have the same (with CRTP soon)
* ctor calls the Impl ctor and sets thing at user level
* start() does a simcall in which we call all the Impl setters to
transfer all field values to the kernel and then call Impl::start()
Maybe we should also replace "new *Impl()" in S4U by a call to a
Impl::create() static method to be written.