reproto environment component

This component provides high-level functionality that needs to be shared between projects, most notably the [cli] and [languageserver].