Investigate rearchitecting `command` and `executable` Go modules

The following discussion from !341 (merged) should be addressed:

  • @nick.thomas started a discussion:

    Pulling in all of command here is probably what makes the binary so much larger than it needs to be. We end up with lots of grpc things that are never used inside it.

    As a follow-up, we might want to look at rearchitecting command and executable to be more like database/sql - i.e., there is a registry, we import specific commands we want to support in package main, and they register themselves against that registry, rather than us having large switch statements that unconditionally import the code. That might help significantly with overall binary size.

    $ strings bin/check | grep -i grpc | wc -l
    2049