fix(service): macOS service_is_running parses launchd state, not just load status
launchctl print gui/<uid>/<label> exits 0 whenever the job is loaded, regardless of whether it is running. The old code returned result.returncode == 0, so a loaded-but-stopped launchd job was reported as running.
This was masked by the previous always-respawn KeepAlive: True plist, where a loaded job was effectively always running. Commit 4a187e1d changed the plist to KeepAlive: {SuccessfulExit: false}, so sol service stop now leaves the supervisor stopped and exposed sol service status reporting the wrong state.
Fix macOS service_is_running by parsing the line-anchored top-level launchd state line from stdout: \tstate = running. The check is anchored to avoid matching nested output such as \t\tjob state = running.
Add realistic launchctl stdout fixtures for running, not-loaded, and loaded-but-stopped states, including the loaded-but-stopped regression case.