use port writer cache
re-added port writer object
use EM callbacks to delete expired writers
fixed websocket read
portwriters: ability to set unlimited (user managed) lifetime
websocket-based write
always cache ports (also for reading)
added some js namespaces

Conflicts:
	lib/rock/webapp/ui/www/syskit/js/gui/actions.js
re-added port.reader(init: true, pull: true) as default behavior for reading
use base64 for binary encoding

Conflicts:
	lib/rock/webapp/ui/js/api/Ruby/Unpack.js
fixed namespaces
removed confusing @readerwriter instance

Conflicts:
	lib/rock/webapp/tasks/cached_ports.rb
fixed websocket disconnect
Time.now().to_i -> Time.now
fixed timer logic (timeout times), proper handling of ports without timeout (manual delete by websocket.disconnect)

Conflicts:
	lib/rock/webapp/tasks/api.rb
	lib/rock/webapp/tasks/cached_ports.rb
Merge branch 'master' into syskit_writer

Conflicts:
	lib/rock/webapp/ui/syskit/js/gui/actions.js
fixed extended info for tasks (provide a block for Orocos.name_service.each_task)

Orocos.name_service.each_task requires a block (calling yield), so
Orocos.name_service.each_task.map(&:to_h) fails

Unexpected error while processing request: no block given (yield)

/home/planthaber/dfki/rock/transterra/tools/orocos.rb/lib/orocos/name_service.rb:174:in
`block in each_task'

/home/planthaber/dfki/rock/transterra/tools/orocos.rb/lib/orocos/name_service.rb:169:in
`each'

/home/planthaber/dfki/rock/transterra/tools/orocos.rb/lib/orocos/name_service.rb:169:in
`each_task'

/home/planthaber/dfki/rock/transterra/tools/webapp/lib/rock/webapp/tasks/api.rb:60:in
`block (2 levels) in <class:API>'
use boolean as paramater type

Conflicts:
	lib/rock/webapp/tasks/api.rb
moved port options to taskmanager.js

Conflicts:
	lib/rock/webapp/ui/tasks/js/api/Ports.js
	lib/rock/webapp/ui/tasks/js/gui/taskmanager.js
removed .to_i from times