Fix ReadByte function when data returned is 0xff

Using `int8_t` left room for values between -128 to 127. 
When the data returned by `i2c_smbus_read_byte` is 0xff this value is interpreted
as two-complement (-1) which is not intended.

This fix use a bigger data type which includes 0xff value and then is downcasted
to `int8_t unsigned`.