GPII-672: Preferences Server Framework, round 1

Hi Antranig - this is the first pass at the preferences server framework. I still haven't got the tests in kettle to run, but everything in universal + windows pass for me. There are some things that are still a bit rough, but if you could let me know which areas are apalling, so I can start fixing those.. Things I haven't looked too much into on purpose is:
* Updating and checking all the config files - as half of these were already broke and we will have to discuss these in cambridge
* Cleaning up all the NP sets -- this is cambridge stuff as well. (obviously, I did update them to be keyed by the ontologies their in)
* Getting too deep in the MM framework. There are several things that could be improved there, but since some of that stuff have to be rewritten/fixed up later anyway, I didn't want to risk getting lost in it and delaying our switch to conditional preferences

What does this algorithm do? It looks quite complex