Ensure calling connection.Start() multi times is safe in .NET client:
- Don't initialize the connection state unless we're actually starting
- Added a unit test to verify calling Start() multiple times doesn't corrupt the connection
- #2675