i2c: core: implemented the backend for I2C xfers

__i2c_transfer:
	Backend I2C transmission function. This function handles an
	of messages to the I2C bus driver. If the transmission fails
	and a retry is requested, it will retry the transmission for a
	maximum of i2c_bus::retries amount of times or untill the
	transmission received a timeout (i2c_bus::timeout).

Signed-off-by: Michel Megens <dev@michelmegens.net>