API keys can be extracted from different sources

This commit allows API keys to be extracted both from request query
string and request headers.
The extraction technique can be configured and the parameter holding the
API key can also be changed.

There is no BC break with this commit as default settings match the
previous behavior.