Buffered Ports 

Re-issue of pull request https://github.com/planthaber/rock-webapp/pull/11 against master
The timeout parameter is interpreted internally as lifetime of the object.

* On first use, the timestamp is set to now and the lifetime is set to the timeout value. Also a EM callback is set up to check after the lifetime whether the object can be deleted
* Re-using the object updates the timestamp
* The EM callback checks if the last use was before the lifetime and deletes the object
 * this happens very close to the (original) timeout

But there are special cases:
* the object is reused with the same tiemout value after half the time
 * the EM callback checks the time left until the timeout and re-shedules itself
* reuse with different timeout
 * this is a concurrent use of the port object
  * both are expecting the buffered port to be available when they want to use it again until the timeout occurs, so we chose the higher one

At least this was my idea.
Writing these lines I think I understood your approach.

There are different possibilites:

1. Always delete the port object after the given time (don't extend lifetime on re-use)
2. Use one single Object per port and update the lifetime on re-use (explained above)
3. Treat port objects with different timeout as seperate objects (with or without lifetime extension)

I think you expected possibility 1 while I implemented number 2