Scruffy Provenance (patch 1)

This is a fairly chunky rewrite of QualifiedCollector that provides for the beginnings of scruffy provenance (effectively all the testScruffy*1 tests). There's now a permute method that generates all permutations of parameters to the ModelConstructor functions. 

The next issue is how to handle the attributes (as mentioned in the previous email) to fix the remaining tests.