Fixed exceptions caused by angular $apply within $apply

The ChartGroup.filterChanged event is called either as part of clicking
on the chart or the the hyperlink, the latter uses Angular bindings.

In order for Angular to detect that the scope has changed, $apply must
be called. However you can not call $apply from an Angular bound event,
so a conditional check needed to be introduced before calling $apply.
Removed unnecessary margin from all divs within #container-body
Combined filterGenres and filterLanguages into one filter function
Using a permanent link, not a conditional button for clearing filtering

Since the button looked out of place, it was replaced with a link which
is permanently visible. This means that all of the code for checking for
any filtering on the chart group has now been removed.