Refactor reporter code

- Throw exception when selected reporter cannot be found
- Allow users to specify reporter with `--reporter` command line flag