Send setState only to new joiners, not to everyone

refs #2182
Listen for onmouseup on document instead of canvas

document will catch mouseup events that occur outside the window and fixes the bug where the app would think the mouse button was still down if the user moused-up outside the window and then re-entered
refs #366