Make abstract Middleware class public

It doesn't make sense for subclasses to have to implement
all methods.
And of course also all the middleware
Merge branch 'public_middleware' of github.com:owncloud/core into public_middleware