Move reply mechanism out of drivers

Doug mentioned something about this during the meeting today.

When I sat down on the train to try to start out the unit testing for the new messaging code, I realized that I was offline and didn't have any test virtualenvs ready to use, so instead I distracted myself with this patch.

The theory behind it is that if we move the timeout to the driver Listener:poll() method, then we can save drivers the need to duplicate the reply mechanism, making them "simpler".

I could imagine a few reasons why this might not be the best idea, though none of them seemed to obtain to the best of my knowledge. But let me know!

The reply target specification is a little hand-wavy at this point.