RandomNumberGeneratorService Threaded

Modifications to make the random number generator
service work with the multithreaded Framework.
The interface now requires a StreamID or
LuminosityBlockIndex argument to the getEngine
function. For each module, there will an
engine for each stream and also each concurrent
luminosity block instead of being just one
per module. This is necessary to prevent data races.
The service now uses the new callbacks for the
threaded Framework. This required extensive revisions
to the internals of the service and also to
the related unit tests. If all modules use
the new getEngine interface, the service
will support multiple threads, forking
(but not multiple threads and forking in the
same job), and replay.

Temporarily the old interface still works while clients
are transitioned to the new interface. But modules
using the old interface must be ONE or LEGACY
type modules (not GLOBAL OR STREAM). If any modules
use the old interface, then both replay and
multiprocess forking will be broken.