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
Instead I will make TrtModel to inherit from `collections.Sequence`, so it will become clear that it is a container objects and that it has a `len`.