Make more DDP errors specific

These errors should look like connection errors, not clean closes:

- Heartbeat timeout (DDP-level or SockJS-level)
- Connection timeout (SockJS implementation)

The "disconnected with no error while waiting for something we asked
for" error in ServiceConnection is now a DDP.ConnectionError so that it
prints better.

If a command refuses to run due to a catalog sync error, it should print
the error. (Commands that merely warn that they could not sync don't
print that error, unless METEOR_LOG=debug.)