Add hasBaseDir to LaunchConfig and use to throw BaseDirRequiredException (#299)