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
Move the target dependent code from the shared code to the HAL implementation
Fix setting GPIO input/output mode.
Explicitly add gpio write/read prototypes to the HAL header
Merge pull request #9 from spectaclelabs/fix-gpio-mode

Fix setting STM32 GPIO input/output mode.
pyOCD: fix CDBGPWRUPACK - CSYSPWRUPACK
vodafone: non blocking circular buffer
Add build options
Implement "save-asm" option
Merge branch 'master' of https://github.com/mbedmicro/mbed
Fix option append