Because a write() used a read8() first, did the clear/set, then send it
back, you had an error if you did a write() on a pin while another input
was just pulled low externally
added readButton() and readButton8() which set the pin(s) high, read,
and then restore to last written state.
Also added begin() te get it in a known state