Restored distribution-by-rupture in the event based calculator

In the past we removed the distribution-by-rupture feature because we did not want to have pickled ruptures in the database. In this PR the functionality is restored with the trick of keeping the ruptures in memory. This scales even
to very large computations. A latter PR will save memory by using the database again, but storing only the rupture surfaces (which format as Python object should not change), not the ruptures themselves. See
https://bugs.launchpad.net/oq-engine/+bug/1336756 and https://ci2.openquake.org/job/zdevel_oq-engine/461.

The companion PR https://github.com/gem/oq-nrmllib/pull/129 is needed.