The code was helpful, but has an error in it in I2CTester.java:
This section should be -
case I2C_TRANSFER:
//The communications configuration needs to be set up for each call of the API.
//All TLV TAGS to do this must be present in the input buffer
len = I2cMaster.i2cMaster(buf, ISO7816.OFFSET_CDATA, len, buf, (short)0, (short)225);
apdu.setOutgoingAndSend((short) (0), len);
(e.g. the output length should match the return length from the I2CMaster.i2cMaster call, and the buffer length shouldn't be set by the length of the incoming command, but should be closer to the length of the APDU buffer)