ReqMgr delete request from CouchDB

Delete request when called deleteRequest() method from Oracle
as well as from CouchDB.
Passes all ReqMgr tests locally, however doens't work because
of a bug in CouchDB low level document delete: #4403 originating
from #4396 - once this low level problem is resolved, it
shall be fine. Tests added into reqmgr.py

Fixes #4289
Fix deletion of couch documents

Delete the fields in the document before commiting with _deleted = True,
make sure that WorkQueue replication replicates the deletion but avoids
creating deleted documents from other queues. Ensure the same in
WMStats.
Fix splitting page issues

Duplicate argument keys cause the object returned to the reqmgr
to be an array. Make sure that there are no duplicate keys,
also display the correct values for EventAwareLumiBased splitting.
Also fix modification of max time for merge.

Fixes #4409
Fix display of output datasets

Datasets produced by output modules that are never stored in merged
area were still reported by the listOutputModules function of WMWorkload.
Fix that by adding a flag that clearly marks transient and permanent
output.

Fixes #4422
Fix JSON missing lumi function

It was broken due to improper testing and old couchdb version.

Fixes #4338
Expose AutoApprove sites to ReqMgr

Also allow modification of move/replica subscriptions for custodial
and give a more descriptive parameter to the priority option.

Fixes #4356
Merge pull request #4423 from zdenekmaxa/reqmgr-delete-requests-from-couch

ReqMgr delete request from CouchDB
Open requests feature

Allows a request with an input dataset to continue acquiring and processing new
blocks after assignment. It works by continuously polling DBS for new blocks in the
dataset, and when found these are splitted as usual and queued in the global queue.

It changes the ReqMgr running state to running-open and running-closed, where
running-open means that the request is still looking for new blocks. running-closed
is equivalent to the old running state.

The criteria to move a request from running-open to running-closed depends on a predefined
timeout, which comes with the request schema. If not given the request will be closed
as soon as it starts running. The request can also be closed at any time
through the web interface or the REST API. Once a request is closed, it will continue
process the already acquired inputs and will stop polling for blocks.

The timeout counts from the last time a block was found (either closed or open).
This feature can only be used with workflows which take a dataset as input,
namely ReDigi, ReReco, MontecarloFromGEN.

Finally, this also fixes the reported issue when a single open block in a dataset
can prevent the request from being acquired. The new behavior is to ignore open blocks
in the initial splitting, and the request will be acquired as long as there is at least
one closed blocks. The continuous polling will only acquire closed blocks.

Also zero event blocks with no site will be ignored, all these ignored blocks will be accounted
on the RejectedInputs field of the global workqueue element.

Fixes #4400
Fixes #4373
Merge pull request #4424 from dballesteros7/fixDocDeletion

Fix deletion of couch documents
Merge pull request #4425 from dballesteros7/workqueue-open-requests

Open requests feature
Merge pull request #4426 from dballesteros7/HG1303-dballest

HG1303 ReqMgr