iobackends: split store and middlewares on backend definition.

Some minor changes would be needed on the backend definitions
on the other projects, namely moving (for now) memoryStore()
from the 'use' list into a 'store' key. Like:

    the_backend: {
        use: [list of middlewares],
        store: backboneio.middleware.memoryStore(db, 'progress', {}),
    }
iobackends: move debug backend before storage
adds iocompat skeleton.
iocompat: adds redisMiddleware

This middleware broadcasts and processes changes over Redis,
sending them thru io to the browser and also emmiting the
'redis' and 'redis:[create|update|delete]' events to update
our models here in the server.
iocompat: adds eventMiddleware

This middleware forwards events from the browser so we can
keep our models here in sync, using bindBackend() as usual.

For requests that came over redis we do nothing as the model
already listens for the 'redis' events, we just pass it along
the chain.

Else, if the request came from the browser we emit a new pair
of events and keep churning.
iocompat: adds 'inherit' from backbone.io
iocompat: patchBackbone, sync works on the server
iobackends: adds eventMiddleware from iocompat.
iobackends: adds redisMiddleware from iocompat if requested.
iobackends: adds patchBackbone()
documentation.
always bind backend on PieceCollection and Universe
Auth: use our bindBackend()