Significantly refactored slave bus code to make it
much less horrible.  This should be more maintainable,
more transparent as to what the slave is doing and just all
around better.  I added a bus reset condition to force the
slave into a known state by sending its addres with a read followed
by a write.  This will not happen normally in the protocol so the
slave can safely reset to a known state when it happens.
Changed protocol to include an arbitrary write after
each transaction.  This is to force the slave to reset
itself back into command receiving mode.