Use `listenTo` to bind to collection sync events

Using `this.collection.on` does not cause the unbinding of bound events on view tear-down by default.
Switching to `listenTo` will remove the events and allow views to got o GC when they are removed.
Will also prevent `render` calls to detached views.
Remove slightly confusing variable assignation

`var compnentInstances = this.componentInstances` made it less obvious that we were acting on a property of `this` and doesn't really add any optimisation since it's just a property lookup.
Remove sub-component instances when removing a graph

Graph components may contain event bindings which would not be removed when the parent view is removed. Do this explicitly.
Remove collection binding from graph tables

Graph tables are `render`ed explicitly from their parent graph view so do no need to bind to the collection.
Having a binding as well causes the table to render twice for every collection event.
Unbind window resize event on remove
Release references to components when view is removed
Merge pull request #309 from alphagov/bugfix/memory-leaks

Bugfix/memory leaks