Add simple timeout and throttling support.

Also start collecting results immediately, create a Report struct, shuffle things around. This is probably not ready for submission, but please have a look, if you think ideas are ok, I will clean it up a bit.