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.

Uuuh no, at least not on windows.  The import table only contains the name of the dll, not the path, and dlls in the exe's directory will be preferred over system ones.

> I am not familiar with Windows build process but it should be something in line with supplying ADVAPI32.DLL to linker flags in Phobos makefile.

You need to supply advapi32's import library to the linker.  It's in the dmd zip as `\windows\lib\advapi32.lib`.