Random more flexible args

Now `random([size], [max], [min])` supports

```javascript
random()
random(max)
random(size)
random(min, max)
random(size, max)
random(size, min, max)
```

and `randomInt([size], [min], max)

```javascript
randomInt(max)
randomInt(min, max)
randomInt(size, max)
randomInt(size, min, max)
```
Does that make sense?
Some tests are missing, but I am waiting for the mocha refactor cause now it's hard to read my test file