New way to detect incoming worker connections

We use the request.remote_addr value to determine the request.
Apparently it's very hard to get the IP address of a machine
consistently on OSX and Linux. Probably there will be problems when we
work with non LAN IPs but for the moments it seems to work.
Worker system detection

WARNING: this commit requires the addition of a 'system' column in the
workers table.
When a worker is started we detect the operating system and the
version. This is useful for sending the right commands to workers later
via the server.