MUMUP-1144 gray out add to home if already there

+ Moved the initial layout call to the `main_service`
+ Moved the `$http.get` for the marketplace out of the function so it just makes the call once, and uses the promises if called again
+ Moved the layout to the `$rootScope` as its used on a lot of pages
+ Changed the category list creation to a `postProcessor` function and added in the `hasInLayout` flag in the loop
+ Added a new button state when in layout (screenshot below)
+ Made removing and adding apps work w/o a server trip


![image](https://cloud.githubusercontent.com/assets/3534544/4891153/34e4c348-63a5-11e4-9b1c-bd2eda75bb39.png)

Observation: different committers seem to be adding and removing these optional semicolons, probably depending upon what local tooling does by default.  Eventually probably worth adopting Google JavaScript style guide.