Fail assignment if child process failed to start

I think I'd prefer this since it's more explicit and will catch the specific problem instead of relying on `bool(self.transport)`

```python
# Transport may not have been setup if the process failed to start.
try:
    return self.transport.pid
except AttributeError:
    return None
```