Use shadow's random source when reading from /dev/random files

When creating a new shadow handle, check if it's from opening a file to either /dev/random, /dev/urandom or /dev/srandom.  If so, add shadow handle to list internal to the host.  Then when reading from file in shadow, if handle is in list, get nbytes from the random source and copy into buffer instead of performing read() operation on the file.
Let's use GHashTable* here for constant time lookups.