Handle errors better in index cleanup

Previously, if a node was down when cleaning up any indexes we'd get an
exception like:

```
{erpc,noconnection} : node@host
     [<<"erpc:receive_response/3 L1442">>,<<"dreyfus_fabric_cleanup:recv/3 L54">>
     [<<"erpc:receive_response/3 L1442">>,<<"dreyfus_fabric_cleanup:recv/3 L54">>,...
```

We can handle that better by anticipating a few more error conditions:
noconnection, exits, throws, timeouts.

To avoid copying the mess in three place let's just use a single helper
function in fabric.

Add tests for all the silly bits.
4 files changed