I2c modifications

Significant improvements to the I2C module. The exact changes are explained below in the commits. 

The more important changes are as follows
* Modified module to be interrupt based, allowing operation in background
* Modularized the module to support multiple I2C buses
* Added error handling
* Added line sensor addresses
* Modified module to fit with RASLib semantically