The BVH is now generic over any kind of data. The building function takes in a closure that can bound the given data type in 3d space, and the rest just works.
This isn't a good implementation by any means. It's just to get things started.