Runbot duplicate detection

This branch introduce the notion of 'duplicate' builds and use it to reduce the load.  Each repository can have a duplicate repository (needs to be explicitely set up) where it will look for possible duplicate builds.  If duplicate builds are found, they are linked together and the result of the real one will be used to display data for the duplicate build.

Also, the branch improve somewhat the style of the code, completely refactors the runbot.repo controller (it reduces by about half the number of sql requests done to display the repo page), add options to the runbot settings page (domain key), add a graph view for runbot builds, fixes a few bugs, and probably introduces some new bugs as well.