Make semi-internal API private

This was previously public so that we could write tests for it, but since the test runner is linked with the object files, it can access symbols that has visibility set to hidden.
Remove unused private field

Basically to avoid a clang warning.
Don’t call super in main menu key equivalent handler

It was calling super to keep our custom code to a minimum, but it turns out that the superclass will sometimes invoke bundle menu items even when items from the other menus are better candidates.

Partially reverts 4b0a9a08c7cea550cf83e48d2471770e6b1fefb2.
Expose scm::find_executable (for testing)

This is so that tests can use the exact same executable to create the repository, as is used to obtain status (svn repositories created with newer executables are often not backwards compatible).
Let SCM tests use same executable as driver

The was previously only done for the svn tests and the code had some flaws, like modifying the PATH environment variable.