rust: prefer Bazel-built server to Python dep (#4578)
rust: prefer Bazel-built server to Python dep (#4578)

Summary:
Since `tensorboard` will eventually depend on `tensorboard-data-server`,
the data server will be installed in our normal dev virtualenvs. When
developing the Rust server with `--define=link_data_server=true`, we
want local changes to take precedence. This patch updates the server
ingester to check for a bundled server binary before checking for a
dynamically imported Python package.

An explicit `TENSORBOARD_DATA_SERVER_BINARY` environment variable still
overrides both of the other mechanisms.

Test Plan:
Run with `--load_fast --verbosity 0` and watch the “Server binary” log
line to see how the bundle is being resolved, in these configurations:

  - no `--define`, no Python package: should fail
  - `--define`, no Python package: should use Bazel binary
  - `--define`, with Python package: should use Bazel binary
  - no `--define`, with Python package: should use Python package

wchargin-branch: rust-bazel-precedence

tensorflow/tensorboard,tensorflow/tensorboard,tensorflow/tensorboard,tensorflow/tensorboard,tensorflow/tensorboard,tensorflow/tensorboard,tensorflow/tensorboard