Issue #6: Implemented temperature state tracking, tool state tracking, and a the requests_temps method on protocol.py
Issue #6: SprinterProtocol now notes target temperatures for tools and bed by checking for codes M104 and M140.
Issue #6: SprinterProtocol now calls on_state_changed event when temperatures change or target temperatures are set.