queue: replace rabbitmq/amqp with redis/rq

* Removes amqplib.

* Adds redis/rq.

* Replace all code that push async tasks.

* add an @async decorator that turns functions into async tasks and
  cleans up after the job (modeled after celery, maybe a bit fragile
  as an API).

* Adapt the background process an rename it to 'worker'.
Refactor @async decorator, set config from worker

* Set a config value in the worker that can be testeted
  and cleanup the Session if in worker.
* Leave async.enqueue() to be able to push a function into the
  queue if in worker.
* Adjust code to call functions directly, not the .enqueue()
  method of the decorator.
Refactoring: rq settings, split out paster timer command

* Bundle all functionality related to rq/redis config handling into
  a new class .lib.queue.RQConfig
* Factor out the code that creates timed jobs into .lib.cli.AdhocracyTimer.
  Add tests for that.
* Create a seperate paster command 'timer' that uses AdhocracyTimer.

I tried to keep the timer and the worker in one proces. The timer
worked well inside the worker process and (still) has redis based
locking. Only one of many timers will schedule jobs. But for some
reason the rq worker locks up after some jobs if the timer thread is
running in the same process, even if both use distinct redis
connection objects.  The rq worker forks a work horse to execute the
job. After several jobs it gets stale.
Fix calls to post_update which was renamed to update_entity
paster timer: Add the entry point to the command
Move rename the tests queue.py to test_queue.py
Port commits from redis branch from adhocracy.buildout

Port the following commits to the new buildout structure inside the main
adhocracy repo:

liqd/adhocracy.buildout@3a7e0f65179bf603bb0f1239497deeabacff88fb
Install redis and configure the redis server

liqd/adhocracy.buildout@14c8eca60307429dff5790e1cd1c927ca1321120
Add section to install rq scripts

liqd/adhocracy.buildout@c4c499c53d05fd21144e1f6f5b68629a79e70b83
Remove the amqp leftovers. bye bye

liqd/adhocracy.buildout@67dd48286a26f5e8bef272f13b651eefded764a7
Tweak redis config
Upgrade redis, redis-py and rq to newest versions

* Update redis from 2.4.14 to 2.6.10
* Update redis-py from from 2.4.13 to 2.7.2
* Update rq from 0.1.2 to 0.3.6
Fix fake_job method name

FakeJob is supposed to work in cases where redis isn't available.

Unfortunately, this doesn't work, as the `Job` constructor and other
methods has changed in newer versions of `rq`.

Fallback to `sync` if redis isn't available would be nice-to-have, but
isn't critical for the RabbitMQ replacement, as the availability of
RabbitMQ is currently mandatory as well.
Port 4340488c216cc7af186096052fc7817de2aa599c to hhu
Squashed commit of the following:

commit 4139a326404bc89e64e07939a1d2c04163f79886
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Tue Feb 26 15:50:37 2013 +0100

    Removed translations (will add them again after merge)

commit 81e1535c16ab0c5cfc231a0c11a28ce2fc57dc50
Merge: 12a401f 4a63ae1
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Tue Feb 26 15:14:10 2013 +0100

    Merge branch 'develop' into feature-email-login

commit 12a401f89f9a4deefa95f45f4a66c391d36e056a
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Wed Feb 20 15:46:42 2013 +0100

    Updated migration script

commit da80e1c69b7a548182d0d99d1aaa121c9e484ef8
Merge: 25c1c69 659aed9
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Tue Feb 19 14:17:51 2013 +0100

    Merge branch 'develop' into feature-email-login

    Conflicts:
    	adhocracy/controllers/user.py
    	adhocracy/i18n/de/LC_MESSAGES/adhocracy.mo
    	adhocracy/i18n/de/LC_MESSAGES/adhocracy.po

commit 25c1c692d988169eb5672cb5d8f615ea4290c854
Merge: b6ed12a 3201f0c
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Tue Feb 12 18:18:59 2013 +0100

    Merge branch 'develop' into feature-email-login

    Conflicts:
    	adhocracy/i18n/adhocracy.pot
    	adhocracy/i18n/de/LC_MESSAGES/adhocracy.po

commit b6ed12a0cb0acc7ed1c4f551435fd76d848f8191
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Tue Feb 12 12:40:19 2013 +0100

    UserUpdateForm has to check if new email adress is already in use

commit c573b548c54bdcc8f594411e788f264ddeadd31f
Author: carschroeder <schroeder_carsten@gmx.de>
Date:   Mon Jan 14 14:42:07 2013 +0100

    Added german translations for all new strings in this branch

commit 71de496c0c04b3583da9be6bac72505cb4abc42d
Author: carschroeder <schroeder_carsten@gmx.de>
Date:   Thu Dec 20 18:56:42 2012 +0100

    Fixed details for email login

commit c4760bff6b850a20aa5be32fbaed601f96780bbe
Author: test <test@localhost.(none)>
Date:   Thu Dec 20 18:28:45 2012 +0100

    Database migration script

commit 60f97c8366df0879d64842d0b49115ee108f5899
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Thu Dec 20 18:20:08 2012 +0100

    Require formencode 1.2.5 for <input type=email>

commit 929f3c05cfa5168cec6568c65d59ee9b33844295
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Thu Dec 6 23:38:10 2012 +0100

    Patch InstanceGroupSourceAdapter._get_item_as_row

commit 321aabc108a84107a1259c3fc4c480211a29f5a4
Merge: 4666373 7bfc7d2
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Thu Dec 20 17:11:20 2012 +0100

    merge

commit 466637399cd96dc21e0a6ebc1ccbdfda0250d3ca
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Mon Dec 10 13:01:32 2012 +0100

    Corrected "failed login" messages depending on allowed login types

commit 562e2d5dba56e7f50554ff0bd2aeda9729a1d352
Merge: 37d6312 122942a
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Thu Dec 6 20:04:45 2012 +0100

    Merge branch 'develop' into feature-email-login

commit 37d63126efc9103eb7856b34479079199724a092
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Thu Dec 6 20:01:26 2012 +0100

    Corrected login_form.html

commit bf6e997e4bee86958365001f43093842e90508e6
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Thu Dec 6 19:32:30 2012 +0100

    Login options added (username+email or only username or only email)

commit 238c960fe9ef26b92e59e0066888c9e14964b87a
Author: Carsten <schroeder_carsten@gmx.de>
Date:   Mon Oct 29 19:05:14 2012 +0100

    login with email or username, not finished
re-enable eggproxy mirror
Require patched Pylons (#245)
build.sh: Fail if curl is used and URL is a 404
Properly escape selected attributes
Allow formatted norms

This commit allows pages to be explicitly marked as formatted.

This currently only has an effect on pages, which are norms ; pages,
which are proposal descriptions, are still always rendered with
markdown. Furthermore, formatting cannot be deactivated on proposal
descriptions through the normal UI workflow.

If formatting is enabled, norms rendered with markdown in the page view
instead of as plain text in a line-by-line view.

If diff is activated, the line-by-line view is used and the changes are
applied to the text as if formatting was off. At a later stage, the
markdown can either be stripped away from the diff, or a real html-diff
can be used.
Remove incorrect `label for` attribute

As discussed in #246, the `label for` attribute refers to an `id`. There
is no element with `id="formatting"`, and the `label for` isn't needed
anyway. Therefore this is removed.
replace root template parser of sysv conf
Merge remote-tracking branch 'liqd/develop' into develop
build.sh: Match adhocracy_user as well