bqi: introspection of RPC protocol

Now the b-q-i script can query the F3 server about the RPC
methods available.
b-q-i: the RPC services may have a doc string, too

When introspecting the RPC API of a remote server.
soft_dev.mirrors: debug when importing marks feed

In an attempt to trace these tons of 'double-mapped' marks,
a few debug lines are added to the algorithm.
import-marks: fix algorithm, we cannot alter a dict in iter

for m in some_dict:
    if foo: some_dict.pop(m)

That was wrong. It would break the implicit iterator of the
'for' loop (w/o using .keys(), that is).
master: fix mirror marks import here, too

Like in last commit, this algo was broken.
import-marks: write erroneous marks to output files

We may need to analyse the marks that failed to be imported
into the database. With this feature, we get plain files of
those issues.
import-marks: improve last commit, look at fork repos
mirrors: reset double-mapped marks as "bad" when importing

When we find a double-mapped mark, we don't accept it on
import. But, on our side, it's better to also mark it as 'bad'
and force one more verification.
soft_dev.mirrors: export marks from forked repos, too

Although the function takes one repo_id as a parameter, we
*have* to export marks from all forked repos, too. That's
because the fastimport/fastexport algo will need to know
any commits done at any connected trees.
mirrorsteps: remove arg that blocked export

Fortunately, this incomplete line would prevent a wrong export.
But now we have to let it run.
mirrors: the mark becomes bad, rather than a commit_id

Actually, a Java issue: the "for .. browse()" line was too
long for me to notice it was iterating on the commits rather
than the marks themselves.
scripts: "prune marks" removes leaf commits

A bit disastrous, but may be used in some extreme cases to
point out branches that need not be there.
bqi: query memory usage through the "objgraph" module

If the "service_objgraph" module is installed in the server,
we can get precious information about python objects
allocated.
bqi: let 'defines' have multiple values set