Make auth interfaces more flexible

Allow AuthenticationNeeded/GrantNeeded interfaces to decide whether to handle the request, or let the default error response be written by the oauth server
no, you get a compile error:
```
_output/local/go/src/github.com/openshift/origin/pkg/auth/oauth/external/github/github_test.go:10: external.Provider(NewProvider("", "")) evaluated but not used
FAIL	github.com/openshift/origin/pkg/auth/oauth/external/github [build failed]
```