Prevent duplicate instances by coordinating via a socket (#2691)

We've been getting a bunch of panics from duplicate app instances
competing over the local sqlite DB. After chatting with @mikayla-maki we
determined it was probably best to add our own mechanism to prevent
duplicates rather than just relying on the OS. My logic is that we'd
need to build a system like this eventually for Windows/Linux anyway so
it's more appealing than reworking our local DB access to be able to
cooperate with another process while likely isn't something we want to
support anyway.

I attempted to keep this mechanism conservative so in the case of
another program interfering with it we should fail somewhat gracefully
and still continue to launch, albeit without the ability to prevent
another instance from launching.

Fixes
https://linear.app/zed-industries/issue/Z-2435/thread-background-executor-1-panicked-at-could-not-send-write-action

Release Notes:
- Added a mechanism to prevent duplicate Zed instances from launching to
avoid a crash.
da7dce79f6Julia committed on 7/7/2023, 6:38:55 PM· committed by GitHubparentsabf3b4acaa29d5
5 files changedLine totals unavailable