make monitor constructor accept a custom reactor object

Instead of using the global reactor object, have MonitoringProtocol.__init__
accept an optional reactor parameter. If not specified, it will default to the
global reactor object, as before. This makes unit testing easier.

Per Twisted docs:

"New application code should prefer to pass and accept the reactor as a
parameter where it is needed, rather than relying on being able to import this
module to get a reference. This simplifies unit testing and may make it easier
to one day support multiple reactors (as a performance enhancement), though
this is not currently possible."
 (http://twistedmatrix.com/documents/8.2.0/api/twisted.internet.reactor.html)

Change-Id: I282892a519fa73e47788c393c3dcf4079f0889d4