Branch/keep unique in view stuff unique when new user joins

This fixes the bug where a late joiner would make the map of the original clients jump back to the origin.

It also makes it so that when a user is dragging a unit, all clients see it dragging as they are dragging it (it doesn't just pop to the new location at the end).

While working on this, I got an idea of how we could eliminate the problem we had where a kinetic-draggable object could cause the model state to get out of sync on different clients ... and simplify our code quite a bit.  Those changes are in here, too. (most of the magic is in `view/kineticjs.js`' `ticked` function)

@scottnc27603 @youngca would you mind reviewing?