feat: added better offline support
Currently, when you are offline, the extension stores and attempts to resend your pulses. However, if vscode is closed, or you switch workspaces, it is all lost.
This PR sends failed pulses to a locally-stored JSON file where they can be flushed when internet comes back, even if vscode has been closed in the meantime.