Well, basicall it´s all there in Cycles. You “just” have to include a DirectLight kernel using the apropriate functions. Maybe it´s a task I´ll take on at one day. Many of the 3rd party renderers have direct lighting kernels or support biased raytracing, however I feel they are too far away from Blender. That´s why I started my own little raytracer basically. I want it to be like BI just a tad better.
And yeh, Blender should be an animation package first, which the complete overhaul of the animation system proofs, but it´s also the “jack of all trades - master of none”. It’s often is foced to branch out simply because the interoperability with other tools is not possible, or because there´s a lack of commercial addons like for vRay, 3ds, maya and so on. But the new addon system will fix that I am certain, BSurfaces already has shown it.
My renderer is coming along quite good.
The first version only had basic raytracing but already had photon mapping with problems with gathering photons, but you could navigate the scene in realtime.
After that I started the second version from scratch because I needed a different program structure. By now it got:
Spheres, diffuse, specularity, multimirror, camera model with FOV, pointlights with color, shadows from multiple lightsources and multithreading. It´s not much but written starting with an empty c++ project it takes time 
Next will be transparency, softshadows, most likely directional and area lights, then rotation for camera, lights and objects and by then everything should be so slow that I got to implement a spatial subdivision, most likely a kdtree/octree. Once that all is done I got to implement triangles and meshes and then it´s time to preheat the photon cannon again and start to implement it.
But a few images say more than the wall of text above 

Left very crude raytracing, no recursive mirror, no specularity, just needed basic raytracing in order to test photonmapping.
Middle is the (only) gathering pass of the photonmap, it´s only with 1000 photons but the result is surprisingly good although you can see, the gathering at the spheres fails, they are blacked out. I think there are photons trapped inside the sphere.
Right is a composite of ray+photon. I also had no caustics in the photon kernel, I didn´t have transparency at all.
The photon emmision also works with a consistant seed for the random directions, so you can use it for animations. This way the same photon is emmited in the same direction in each frame, just it´s path changes with a possible animation.
That´s the basic idea, renderpasses, irradiance passes/maps and you can composite, combine and fake the hell out of the renderer so you get fast and believable but physically incorrect results 
The current state of the raytracing kernel is this:

It´s still slow (28s on a quadcore) but it has no optimiztions whatsoever, it checks each ray against all objects in the scene for intersection which can take some time (2052 objects)
I guess with a kdtree, some processor extensions (SSE) and calculation optimizations i should get it 10 times faster quite easy. And I also want to look into OpenCL and there´s 64bit optimization as well.
The mirror depth is set to 2, it looks a bit odd because the spheres with a shadow on it reflect each other ^^
I am also not sure if the greenish sphere mirrors correctly in the specularity of the yellow light, but that´ll be an issue of testing lateron.
The program structure is made that the renderer can handle multiple scenes at ones, scenes with multiple cameras and lightsources as well, it just depends on what you set active to render.
Well, I am having a lot of fun with this stuff and hope that at one point I got a tool you can use to render animations fast for Blender.
btw. working title for the photon cannon was “Lichtblick” which means “gleam of hope” but literally translated it means Licht = light, blick = view… but I found this to sound cocky.
So the product will be called cRayon. I build the renderloop so that the image constructs in horizontal lines apart 4 times the number of threads. It looks like you draw it with crayons and it got Ray in it. 
Personally it´s important to me that the scene builds in scanlines, because you can already judge the image after the first iterations when you got a full image with black lines between it.
The whole thing currently uses SDL so it´s able to compile crossplatform. I guess though once I need a real GUI i´ll change to wxWidgets, which is crossplatform as well. So Linux and OSX users can use it as well.
I guess I´ll simply abuse this thread a bit to keep you updated on the renderer. I think it´s too early to give it it´s own thread and I don´t want to at this point 
Well, enough talking. back to coding 