Make auth middleware extendable

Hi, 

this PR is a probosal of mine how auth middleware can be extented by the grape user.
If it might be usefull I would finalize this draft with spec's and a DSL extenstion.

What I have in mind is at the end some thing like this:

```ruby

class MyAPI < Grape::API
  register_auth :my_digester, MyAuthMiddleWareClass, ->(settings) {  [settings[:a], settings[:b]]}

   auth :my_digester, a: "1", b: "2"  do |..., ... |
  
   end
end

```
Ok, so include the Auth-Middleware every time

```ruby
b.use  Grape::Middleware::Auth self, settings[:auth]

class Grape::Middleware::Auth < Grape::Middleware::Base
    def initialize(app, endpoint, options = {})
        super(app, options)
        @strategy = find_it_some_how # or raise error if not found?
    end

    def before
       # here the magic happens
    end
end

```