Use a callback for credentials

Instead of making the user choose beforehand, use a callback to let the
user ask a database or human about the credentials.

If desired, a hard-coded value can still be provided via a lambda, e.g.

    (_url, _user, _types) => new UsernamePasswordCredentials() { ... }

/cc @nulltoken @Therzok
Done. I even put the brace on the next line, what's the emoji for "like a barbarian"?