Moved availablePanels into scope.

Similar pattern, availablePanels was just used in the display and
it wasn't used in the dashboard service at all. Hence, in my book,
this field makes more sense in the scope.

In order to get the field to the scope, I leveraged the previously
introduced dashboard-loaded event. To leverage the event, I had
to change the event sending from emit() to broadcast(). This makes
more sense in my opinion anyway - if we load a new dashboard,
/everyone/ should know about it so /everyone/ can update whatever
they are doing. Once I had that changed, I could just add an
event listener which computes availablePanels based on the newly
loaded dashboard nav & pulldowns and that's that.

This shouldn't introduce any storage backwards compatibility
issues, because I didn't move nav or pulldowns out of the dashboard,
and availablePanels wasn't / doesn't need to be stored since it's
just computed from nav/pulldowns/the config.