lsif/protocol: add Sourcegraph documentation extension read/write support
Created by: slimsag
I kept all of this in separate files so it's as isolated as possible generally.
Tests are intentionally omitted for now (but please call out if you think there are chances this could negatively impact non-API docs related things), I will be following up on test coverage later and am recording this exact instance in https://github.com/sourcegraph/sourcegraph/issues/20567
Additionally, this fixes a few straggling bugs with the spec - namely that documentationString
edge defined a "type" field that conflicted with the regular element "type:"edge"