Normalize line endings.
Fix bug when selecting worker node for a task.

When selecting a worker for a task, there was no check in place to
ensure that the worker had enough open slots to perform the task. For
example, a worker with 1 open slot could be assigned a task that
requires 2 slots.

This commit addresses this issue and cleans up the readability of the
code.
Load all Python modules, not just those in `load_order`.

First, (re)load all Python files listed in `load_order`. Then (re)load
any Python files that haven't already been loaded.
Replace all `system` calls with `Popen` in `dataaccess.py`.

All commands are now run using `subprocess.Popen`. When commands are
run, STDOUT, STDERR and the return code are captured and returned. This
allows for much more informative error messages when commands fail.
Revise task results.

Update result interface. Callers now specify all the pieces of the path
of the result file. Callers can also optionally specify the store
directory.

Also add a second type of results: logs. Logs are not necessary for
recovery. When storing results, missing logs are ignored and do not
constitute an error.

Finally, the hostname of the worker is stored by all messages. Tasks can
use this to internally manage the 'host' parameter when storing results.
This recudes the ammount of information stored for each result, and also
lets results be added before a task is deployed (although '_root'
becomes invalid once deployed).
Fix indentation in `util.py`.