Optimize the disaggregation calculator

See https://bugs.launchpad.net/oq-engine/+bug/1279247. The tests pass: https://ci.openquake.org/job/zdevel_oq-engine/342/

The measured improvement has been up to a factor 60: from 12 hours to 12 minutes for Luis' real life computation.