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.
19694 - Remove plugin.discovery.timeout

The plugin.discovery.timeout option used to be useful a long time
ago as a way to influence default discovery time.

It's not been used for this for a long time and now doesn't really
change anything in a meaningful way, this commit removes this feature