gazelle_binary: create gazelle binaries with custom languages (#365)

gazelle_binary is a new rule that creates binaries to be used with the
gazelle rule. It accepts a list of languages (the default languages
are proto and go). It generates a .go source file that imports the
language packages and initializes each extension. That source file is
compiled into the main package in a new gazelle binary. The rest of
the main package does not reference any specific languages.

Fixes #311
14 files changed