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.
OK, I'm not sure that this particular block of tests, which uses the CommandRun class in the spec to wrap Launch is the best place to do this. I've had a quick look but I'll need to address this later.