Code effeciency project:  Canister icon updates

Before:  If a canister is hooked up to a connector port it's icons were being deleted and recreated every tick.

After:  We store an update_flag that is a bitfield of the current icon and overlay states, and created a proc to check if it should change.  If not, we don't mess with icons.  Real simple.
Merge pull request #4428 from Ccomp5950/canister_icon_fix

Code effeciency project:  Canister icon updates