Selection layer abstraction

There are many uses for a 'selection' layer of the graph.
The selection layer can be used to zoom to a certain rectangle scale, or
it can be used to select certain nodes of the graph. That's a design
decesion we'll have to reach together. For now, the layer is abstracted
in way that will allow us to define the functionality pretty easily.

Note: I don't really like what I did to capture mouse events. I'd love
to have a separate div container specifically for this layer, but I was
having trouble with event propogation and absolute positioning. I currently use
the main parent div as the layer's container.

Another note: I did this in coffeescript and compiled it to javascript. Currently, I'm just ignoring the coffee files when I commit code so it doesn't pollute the repository. I'm fine with continuing to do that, but I'm not sure that's the smartest / most efficient way to develop, especially when we start editing the same files.