Add a facility to read source models in commonlib

See https://bugs.launchpad.net/oq-engine/+bug/1390348.
This also fixes https://bugs.launchpad.net/oq-engine/+bug/1267424.
The tests are green: https://ci.openquake.org/job/zdevel_oq-commonlib/185
I am rewriting the condition in a way that should be clearer