added missing extern "C"
deal with case where master does not NACK last byte of slave response

support for 0 byte slave replies (aka SMBus Quick Read)