Get and set full state of Random Number Generator

Hi Ronan, Koray, Clement

Working with Andreas, we implemented two functions `torch.getRNGState()` and `torch.setRNGState()` to manipulate the whole internal state of the Random Number Generator (RNG). This is in complement to the initial seed, for which functions already exist: the initial seed requires to re-do the whole sequence of calls to random() until the point of interest, whereas the state before the last call to random() is enough to reproduce without re-running through everything. Very useful for debugging of Monte-Carlo code!

Koray helped us a lot for moving the headers around. This was mandatory to allow our new functions in Random.c to return a Tensor. 

Note: I have manually wrapped the C function `_getRNGState()`, because I did not find how to return multiple `long` from a function using the `wrap.lua` and `returned = true`. I am actually not sure if it is possible yet: all the `long` I have seen in the codebase where `creturned=true`, not `returned=true`. I will be happy to discuss a patch about it, but that's a separate issue from the RNG state.

Please let me know if I can be of any help getting this accepted!
Cheers,

Julien