Added I2C bus error detection and handling.

Added board generation detection and configuration.
Renamed pin functions so public methods don't start with underscore.
Added a high-resolution timer object for I2C timeout use.