Changed ircop plugin interface and functionality

Each ircop.OpProvider request now returns a deferred that doesn't fire
until the request has been completely fulfilled. It errbacks if there is
an error at some point.

This means plugins should now submit all their requests before waiting
for any of them if the plugins want them to be submitted in the same
batch.

Additionally, connector requests are now also buffered, since they
should go in with the batch if the plugin is going no need to acquire OP
for another request anyways.

This change was made to simplify the workflow for calling plugins.
Calling plugins no longer need to submit the requests in any particular
order to have them batched correctly, they need only submit them all
before waiting for any.

This also fixes some problems in error reporting where a request that
doesn't normally err because it's a connector operation may because it's
being submitted along with a batch of other requests.

Other changes: made the !holdop command take a parsed time spec instead
of an integer.

Fixed ban command specifying a nick!*@* still banning *!*@host instead
of the mask as given.

Removed extra log messages

Simplified the do_mode and do_unmode methods in admin plugin. Changed
the interface to make it return the deferred from the ircop request, so
that the caller can wait or submit something else (like a kick). Also
we're not passing around reply functions any more (ew)