Code effeciency:  canister/update_icon

Before:  canister/update_icon is called every tick if the canister is hooked up and redraws the icons.

After:  canister/update_icon checks to see if it even needs to update it's icon's before doing so.
Merge pull request #2787 from Ccomp5950/master

Code effeciency:  canister/update_icon