add static util method for discovering services
define filters, filter chains and a default impl
define some default providers
use util service loader
adopt provider interfaces
move injector to context provider pkg
migrate protocol config to use different providers