Port to Python3

Port to Python 3, rewrote for a little bit more DRY, fixed spelling
mistakes in eeprom functions, passes 19/19 tests