Fix a bug in the implementation of the pseudo-random number generator

This commit fixes an error in the mathematical formula of the Wichmann-Hill
pseudo-random number generator. In particular, the implementation used until
now produces sequences which differ from the expected ones by an extra starting
number, which is instead the very last value of the sequence.
This bug amplified the effect of extremely correlated initial numbers when
seeding different generators with very similar seed values.
Improve algorithm in module random.

Avoid seed values that are even divisors of the primes
and by that prevent getting seeds that are stuck on zero.

Example: random:seed(0,0,0) would produce a series of only zeros.
Reduce calls to phash in key_to_frag_number

Original code calls phash 1..2 times, based on which fragment the hashed key
targets and how many fragments exist. New code always calls phash only once.
add mnesia_frag_hash test
Update version numbers for R15A development
Merge branch 'dev' into major
Merge branch 'dev' into major
Merge branch 'dev' into major
Merge branch 'dev' into major
Teach prim_file:list_dir/1,2 to use fname chunks

The efile driver will now use chunked data on list_dir. This will
lessen the number of sends to prim_file and hence improve
performance. This method is utilized in both direct and async cases.
Add NIF function enif_is_number

This function allows for easily determining if a term represents
or not a number (integer, float, small or big).
Fix boundry error where files might get lost
Update preloaded prim_file.beam
Merge branch 'egil/optimize-listdir/OTP-9023' into major

* egil/optimize-listdir/OTP-9023:
  Update preloaded prim_file.beam
  Fix boundry error where files might get lost
  Teach prim_file:list_dir/1,2 to use fname chunks
Merge branch 'dev' into major
Improve ethread atomics

The ethread atomics API now also provide double word size atomics.
Double word size atomics are implemented using native atomic
instructions on x86 (when the cmpxchg8b instruction is available)
and on x86_64 (when the cmpxchg16b instruction is available). On
other hardware where 32-bit atomics or word size atomics are
available, an optimized fallback is used; otherwise, a spinlock,
or a mutex based fallback is used.

The ethread library now performs runtime tests for presence of
hardware features, such as for example SSE2 instructions, instead
of requiring this to be determined at compile time.

There are now functions implementing each atomic operation with the
following implied memory barrier semantics: none, read, write,
acquire, release, and full. Some of the operation-barrier
combinations aren't especially useful. But instead of filtering
useful ones out, and potentially miss a useful one, we implement
them all.

A much smaller set of functionality for native atomics are required
to be implemented than before. More or less only cmpxchg and a
membar macro are required to be implemented for each atomic size.
Other functions will automatically be constructed from these. It is,
of course, often wise to implement more that this if possible from a
performance perspective.
Use new atomic API in runtime system

All uses of the old deprecated atomic API in the runtime system
have been replaced with the use of the new atomic API. In a lot of
places this change imply a relaxation of memory barriers used.
Merge branch 'dev' into major
Merge branch 'ia/odbc/mysql' into major

* ia/odbc/mysql:
  Test odbc with MySQL
Merge branch 'ia/odbc/ipv6-solaris-eaddrnotavail' into major

* ia/odbc/ipv6-solaris-eaddrnotavail:
  Update to handle ipv6-solaris behaviour