No events in renderers

Previously the layer renderers used a mix of `changed` events and direct calls to `this.getMap().render()` to request rendering. This PR removes the use of events and uses direct calls exclusively.

The refactoring of the color matrix code was necessary to avoid an infinite loop.