Correct metadata merging in Index call

Before, any default repo metadata value would take the place of a
request value, meaning that the 'host' and 'port.rpc' keys used
for remote RPC calls would never be able to be made.
Fixes remote indexing calls

There's a question around whether we should pass through the repo in the
case of the backend reporting the Repo available. At present the error
is passed through to the caller, which doesn't allow a graceful refill
of a front-end instance. That can be added as an explicit error handler
during indexRemote(), or the error(s) could be handled more gracefully
in general.
Add recursive query support

Avoid recursion loops by adding explicit recursion support.
The indexer removes recursion prior to performing a remote query, so
recursion is only ever one hop.