Most importantly, in some circumstances it was setting the "detected"
MTU to the value of the first *failing* packet size, not the last
working one. But also fix up various other issues too, and optimise it
for the common case where the negotiated MTU *is* actually working.
There are still issues with the way we choose the next candidate address,
and it might never reach the actual best MTU. But it's better than it was.
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>