WIP: Volume rendering

This PR implements volume rendering. It's basically a port of the technique that I use in Visvis.

Todo:

- [ ] make volume available in demo-data
- [x] make rendering work well with perspective camera
- [ ] deal well with anisotropic data
- [ ] make camera information nicely available in vertex shaders, also for e.g. imposters
- [ ] implement other rendering techniques
- [ ] implement clim (contrast limits)
- [ ] efficiency, make sure no program recompilation etc.
- [ ] set camera limits automatically based on visual bounds
- [ ] implement fly-through camera (yes, I want the camera *inside* the volume)

> OMG, yes it does seem to work.

Although, I suppose it would break down if between the document and the volume there is another viewbox, which has a transform other than translate-scale only. Can we have a `transforms.visual_to_nearest_viewbox`?