Complete (and final) revamping of the CUDA rand engine.

New:
* based 100% on CuRand

* reproduced seed interface from Torch:
    cutorch.manualSeed(seed)     : set a seed for repeatable experiments
    seed = cutorch.initialSeed() : retrieve initial seed
    cutorch.seed()               : force seeding (this is done once on startup)

* I only implemented the distributions that were meaningful
  for floating point tensors (CUDA is float only for now):
    uniform(a,b)
    normal(mean,std)
    logNormal(mean,std)
    bernoulli(p)
    cauchy(median,sigma)
    exponential(lambda)
    geometric(p)