Merge tag 'sparks-1.20.4' into develop

1.20.4
rename the template to match supervisor enhancements.
add the `get_current_role()` fabric helper.
Factorize into a supervisor helper class; a bunch of internal documentation updates. Use fabric's `execute()` and support `@roles(…)` (document them). This is an important commit for sparks 2.0.
Factorization & documentation.
Merge all hosts from roles if we have none at a task start.
Automatic host merging from roles, directly in the project fabfile.
Automatically setup parallel execution.
More logging, internal docs and small updates (ssh is useless now that we have fabric :-) ).
A try at @runs_once.
No parallel, it fails with:

```
fab test deploy
[localhost] local: git rev-parse --abbrev-ref HEAD
[obi.1flow.io] Executing task 'deploy'
[obi.1flow.io] out:

!!! Parallel execution exception under host 'obi.1flow.io':
Process obi.1flow.io:
Traceback (most recent call last):
  File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/olive/.virtualenvs/1flow/lib/python2.7/site-packages/fabric/tasks.py", line 182, in inner
    submit(task.run(*args, **kwargs))
  File "/Users/olive/.virtualenvs/1flow/lib/python2.7/site-packages/fabric/tasks.py", line 123, in run
    return self.wrapped(*args, **kwargs)
  File "/Users/olive/.virtualenvs/1flow/src/sparks/sparks/django/fabfile.py", line 1073, in deploy
    runable(fast=fast, upgrade=upgrade)
  File "/Users/olive/.virtualenvs/1flow/lib/python2.7/site-packages/fabric/tasks.py", line 120, in __call__
    return self.run(*args, **kwargs)
  File "/Users/olive/.virtualenvs/1flow/lib/python2.7/site-packages/fabric/tasks.py", line 123, in run
    return self.wrapped(*args, **kwargs)
  File "/Users/olive/.virtualenvs/1flow/src/sparks/sparks/django/fabfile.py", line 1031, in runable
    execute(install_components(upgrade=upgrade))
  File "/Users/olive/.virtualenvs/1flow/lib/python2.7/site-packages/fabric/tasks.py", line 270, in execute
    task = crawl(task, state.commands)
  File "/Users/olive/.virtualenvs/1flow/lib/python2.7/site-packages/fabric/task_utils.py", line 23, in crawl
    result = _crawl(name, mapping)
  File "/Users/olive/.virtualenvs/1flow/lib/python2.7/site-packages/fabric/task_utils.py", line 14, in _crawl
    key, _, rest = name.partition('.')
AttributeError: 'NoneType' object has no attribute 'partition'

Fatal error: One or more hosts failed while executing task 'deploy'

Underlying exception:
    'NoneType' object has no attribute 'partition'

Aborting.
```
And I have no time to check *now*.
make the pkg_update() in base(), else every APT command will fail because of outdated lists.
logging and docstring updates.
Disable paramiko logging when sparks is verbose.
Temporarily disable execute() usage, it breaks badly in `_crawl()` deep down in Fabric.
make the log basic formatter less verbose.
debug.
rename.