Protocol and timeout work

* Add Timeout enumeration to provide consistent timeout values
* Start using more methods when executing protocol
* Prevent stack overflow from getSynchronization being called
  infinitely
* Add numerous logging statements
* Fix issue with buffered reading not changing state #20