Implemented template "Printer" to format output

Printer is designed as a curiously recurring template idiom
Factored out common (low level) I2C functions
Introduced TWI<>::Device abstraction level
I2C read/write address now treated as an address

the address is shifted and r/w bit flipped in
the read()/write() method. No longer caller's responsability
Added generic methods TWI::Device::read()/write()
Added Printer<>::bindump