More work on Trace & long-polling timeout bug fix

Now, when you click the Trace button, almost all the other buttons will be
greyed out. Furthermore, the canvas takes on a grey background to indicate that
you can no longer edit the points. The points themselves are replaced by the
points that the robot is following, which may be different if you have edited
the points in the working space since then. I had to write a deep copy function
for the points array (since it contains reference objects, not just values)
otherwise the tracePoints array would get changed. While doing this I realized I
also needed to do a deep copy when loading points -- not sure why I didn't
notice this bug before. All this mutability certainly makes the program more
complex and difficult to reason about.

I also fixed a bug that was hard to detect before due to the 30 second
long-polling (status update) timeout. In short, the JS times out but the server
does not. So eventually all these requests crowd the Greenlet space of the
server, waiting for messages that aren't there. The problem became apparent when
I chagned the ajaxTimeout to a very small value -- none of the messages could
get through at all due to the proliferation of timeouts and new requests. I
added a timeout on the server's end that matches the client's timeout, and the
problem went away.