Visitor code has been split between header and sources to speed up incremental build. Moreover the code was reorganized using a new `infra` bazel package (and `visitors` got promoted to a bazel package as well).