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

```
I think this should become something like `use Grape::Middleware::Auth::Basic` and without the `if settings[:auth]`, simply the middleware would have access to the settings and can decide to pluck `auth`.