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.
auto merge of #3819 : mrobinson/servo/clean-up-events, r=pcwalton

There are many function and methods that operate on a single layer, that can really just be methods on a CompositorLayer trait. This greatly simplifies the way that Compositor interacts with its child layers. This PR is just code motion.