Keep separated levels of context data for report

Report receive full context data (nested contexts in a sequence) so that
presenters can choose how to exhibit this information.
Make use action pointers for generating ids

Change SpecRunner#addContext and SpecRunner#addSpec to be pointers to
some action, it will allow to change those actions to noop when only
running the specs.