Make compositor event handling a Layer trait

This simplifies the way that event handling interacts with the
compositor.
Combine events and CompositorData methods into CompositorLayer

This is a more natural collection of methods, as they all operate
directly on layers and accept a layer as their first argument.
Move compositor_data.rs to compositor_layer.rs.

The new name better reflects the majority of the code in the file.