Refactor gather tests into static call

This moves the core logic of `Benchmarker#__gather_tests` into a static method inside the `utils.sh` file. It also trains `Benchmarker#__gather_tests` to respect the `exclude` flag (which it was not doing before). It also fixes a bug in the installer logic where directory names (e.g. `aspnet`) were being confused with test names (e.g. `aspnet-mono`)

This is useful because:
* gather_tests is generally useful--it was duplicated in run-ci and the installer, which is begging for code rot
* If others want to interact with our codebase, they can now just `import utils` and have instant access to the `FrameworkTest` objects for each test