Several places:
returnStatus = 0;
returnStatus = start();The 1st assignment (=0) is overridden by the 2nd assignment, so remove the 1st.
This is one of those palm to forehead moments...I honestly don't know why I did that. I'll fix that up in the next rev.
void I2C::setSpeed(uint8_t _fast) why not use bool _fast?
Initially I was going to have a range of speeds available but ultimately didn't include that option so I just left it as a byte.
The scan function was written to be mostly a diagnostic function and not really meant to be incorporated in the main program. Actually I slipped it into the library because I got tired of opening a separate sketch everytime I wanted to scan the bus. The scan function is actually part of a larger sketch I'm working on to diagnose I2C bus problems. I didn't want to parametrize the function because I wanted to gear it towards the person that doesn't know too much about I2C making it as easy as possible (I'm a firm believer in the KISS principle).
Thanks for the feedback...keep it coming. Always looking for improvement ideas.