Break up the volume renderer code

This splits the `VolumeRenderer` class into several different classes. It should make it easier to add new `Actor` objects to the scene.
I'm not really following how the new connections are being made. Why isn't the actor passed in as an argument instead of searching the scene for something that looks right?