I2C API refactoring

Now the I2C send/receive functions in the mbed HAL return the number of
bytes actually transferred or an error code (a negative value). The
public API remains unchanged.
Added I2C master/slave test
Added timeout to i2c_stop operations

Fixes this issue:

http://mbed.org/users/mbed_official/code/mbed/issues/3
Added I2C master/slave test to the list of tests