add GetRandBytes() as wrapper for RAND_bytes()

- add a small wrapper in util around RAND_bytes() and replace with
  GetRandBytes() in the code to log errors from calling RAND_bytes()
- remove OpenSSL header rand.h where no longer needed
- move rand functions from util to new random.h/.cpp
I don't see any reason for stand-alone helper functions to be using program state and internal functions. For example:
```
bool GetRandBytes(unsigned char *buf, int num)
```
should become
```
bool GetRandBytes(unsigned char *buf, int num, std::string& error)
```
Then the caller decides how to handle it, in this case using LogPrintf() if the result is false;

Ignore my complaint for now. I'll add it to the list of stuff I'd like to get to.