Wrap all synchronous methods in Connection

Wraps synchronous methods in Connection w/
TaskUtilities.ExecuteSynchronously, which discards the current
synchronization context before creating the task.  This addresses
possible deadlocks when using the "synchronous" methods with a
synchronization context that doesn't expect internally using async
results; in the mean time, real async methods still use the correct
synchronization context as expected.