refactor of builder into its own model

refactor builder into a model, which should be a bit easier to see whats going on, could use some more work still.. 

also had a lot of unrelated changes in the same branch:
-removed some code duplication
-change populate methods in services (also the find methods that use populate) to also accept an array of things to be populated, instead of just true/false (all/nothing)
-misc small fixes/cleanup