digitalWrite: Skip if value isn't changing

This is not a big deal for most projects; but layered abstractions
(such as the LCD) can write values unnecesarily. This optimization cuts
down on wasted comms.