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. The tests are green: https://ci2.openquake.org/job/zdevel_oq-engine/462.

The companion PR https://github.com/gem/oq-nrmllib/pull/129 is needed. NB: this PR also paves the way for the future database refactoring, i.e. it introduces the gmf_rupture table.