19827 - Application#halt does not work if discovery data is supplied

Prior to version 2 the discovery situation was real simple, discovery
time == 0 means there were no discovery done at all.

Since version 2 things are a lot more complex as discovery time can be
zero if someone supplied specific discovery data either through --nodes,
or -I or through the API.

The halt() helper needed updating for the post 2 world and unfortunately
this means the behaviour also had to change slightly

it would exit with 0 when no discovery done but any responses were
received, effectively masking situations with no discovery but with some
failures.

This refactors the code and changes the meaning of 0 slightly in the
case of no discovery to: no discovery were done and > 0 responses were
received, all ok.

Thus in cases where discovery isn't done for whatever reason you still
get correct exit codes in the case where any results were failures.