Add SystemEntropy and HashDRBG generators.

(This is a fixed and updated version of #2206)

Adds two RNG's suitable for cryptographic purposes.

Unlike the algorithms of Phobos's existing PRNGs, the core nature of both the system RNGs and the general Hash_DRBG algorithm is to generate an arbitrary (user-specified) number of bytes at each request. That leads to this PR's notion of RNG "streams", which the SystemEntropy and HashDRBG ranges are built upon. Since the new redesigned std.stream isn't ready, the docs in this PR specifically note that these optional "stream" interfaces are subject to change. However, I'm not entirely opposed to simply making them private for the time being, if that's deemed more appropriate.

Joseph Rushton Wakeling and I have discussed at length various aspects of this (and future directions of std.random, FWIW) in this NG thread: http://forum.dlang.org/thread/lk476f$159d$1@digitalmars.com
When you do normal dynamic linking, fully qualified path to dll/so gets bound during compilation/link time. So if it got resolved to system-wide dynamic library, hijacking it will require root access. Runtime loading allows to place a local dynamic library which has higher priority in path resolution over a system one.

chroot makes it possible to fake the system environment, of course, but it won't help to hijack already installed program in the host system (with only user access)