Component UI resiliency in the face of broken components.

On loading of the UI, we ask the database for the URLs to components that we have 'learned'.  We add them to the menu always, but mark them as 'broken' by default.  The component-tray.js loader sends an event when a component is actually loaded into the tray which is then used to remove the broken indicator.

The functions and call flow feel better to me with this version.

Passing over to @Pomax for his take on things.