Reworked reset() and added busFail()

Reworked the reset function to get rid of the retries loop and to give
more information about the source of initialization failure.

Instead of checking for high before the reset pulse, it runs straight
though and checks the bus level after the end of the reset sequence to
make sure it returned to high. It also remembers the result of this test
and allows calls to differentiate between (1) good bus but no slaves,
and (2) possible bus short or insufficient pull-up by calling busFail().