Refactor Launch to validate in .new, not .run.

This is a bit of refactoring that I worked out as I was digging through the code base looking at other things. No real functional changes at this time, other than to fail faster if there's issue with configuration loaded

Better to set up and validate when the class is loaded, rather than defer it to when we want to get work done.
I think there's still value in asserting that `#run` is called on `mock_launch`.