Fixed and improved xorshift128+ implementation.

Current implementation is wrong because `this.seed1 = SOMETHING() + this.seed0;` makes the seeds highly correlated on each random generation. The correct code is
````java
this.seed1 = SOMETHING();
return this.seed1 + this.seed0;
````

Also I've overridden all `nextXXX()` methods so to make them use `nextLong()` instead of `next()` which returns an int value. This way methods like `nextLong()` and `nextDouble()` can internally use only one random long instead of two random long casted to int and then appended.