keep references of ports and writers and remove them only after a timeout

The GC can collect them any time after the timeout.

Hopefully solves this Issue https://github.com/planthaber/rock-webapp/issues/2

I opted for two things:

1. The timeout parameter to be a GET param (inside the url ../port/write?timeout=30).
2. Instead of adding callbacks for each writer, there is a single callback who cleans all references to writers where the timeout time has passed (like a timeout based garbage collector). Still, there are the other options: callback for each, set callback time to next timeout

A motion command needs to have a lifetime. You don't just write "a command", you send a command and want it applied for a certain amount of time. Otherwise, your robot would not move (apply the command and the next millisecond stop applying it).

If you don't maintain the command, a high timeout will cause the connection to "look" active for very very long even if the browser gets closed. That's why I would prefer having a much smaller timeout by default.

Now, you of course have a point about latency. One way to seriously reduce it would be to cache the ports themselves. One would then only need to create the connection, but that is not exactly cheap either.