random: added a random driver interface

how should this be designed?

I see this PR as a discussion forum for this long standing discussion
I think an unsigned result of number of read bytes is better, better yet size_t.
0 tells that nothing was read, which I find less arbitrary that -1.
Also there might be cases were you can just omit the check of the result if you process it in a loop.