Make the logic for locating a local engine path part of its own class, add documentation, and update tests to cover engine source path locating too. #47161