Project refactor, primarily motivated by the desire to selectively apply authentication.
Changes:
- Refactor codebase into smaller chunks
- Support selective authentication (use matchers to selectively apply authentication to some paths/hosts)
- Improve logging
- Facilitate multiple authentication providers
- Support multiple config files
- Maintain backwards compatibility for all flags
- Update tests to use testify
- Improve documentation