Add retry support to I2CInterface

Enhance the I2CInterface class hierarchy to support retrying failed I2C
operations.

Add an optional parameter to i2c::create() to specify the maximum number
of retries to perform for an I2C operation.  Default to 0 retries so
that existing code will not be affected.

Testing:
* Tested each modified function
  * When I2C operation succeeds
  * When I2C operation fails
    * When no retries are done
    * When retries are done
      * When retried operation succeeds
      * When retried operation fails
* See complete test plan at
  https://gist.github.com/smccarney/8d203a40d9984402ac495dc3d689c12d

Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
Change-Id: I2b0e782e5caaafa9908ef5625687377b959b38ff
diff --git a/tools/i2c/test/mocked_i2c_interface.cpp b/tools/i2c/test/mocked_i2c_interface.cpp
index 2fed41e..4747490 100644
--- a/tools/i2c/test/mocked_i2c_interface.cpp
+++ b/tools/i2c/test/mocked_i2c_interface.cpp
@@ -7,7 +7,7 @@
 
 std::unique_ptr<I2CInterface>
     create(uint8_t /*busId*/, uint8_t /*devAddr*/,
-           I2CInterface::InitialState /*initialState*/)
+           I2CInterface::InitialState /*initialState*/, int /*maxRetries*/)
 {
     return std::make_unique<MockedI2CInterface>();
 }