Make abstract Middleware class public

It doesn't make sense for subclasses to have to implement
all methods.
Remove misleading IMiddleware interface
Merge pull request #5144 from owncloud/public_middleware

Make abstract Middleware class public