Design full build matrix and implement it.

We need to gather some data and then complete the definition of the build matrix. There is an skeleton in #8, but that won't be enough. And a full NxMxK matrix of all combinations of compiler, platform, and build options would be overkill.

The design should answer these questions:

  • What version of gRPC we support?
  • What distributions of Linux we support?
  • What compilers and versions we plan to support?
  • For Windows, we need to get specific with MSVC versions