Add //rust/private/BUILD (therefore create a package there) (#569)

This PR achieves the following:

* buildifier bzl-visibility check was not detecting violations as it assumes private package, not just a directory
* adds //rust:common.bzl file where all the publicly available and supported API for writing custom rules interacting with Rust will reside
* the private package now sets the stability expectations, and it forces us to think about API layering and abstractions.

This turned out to be much bigger PR than expected :(
diff --git a/rust/platform/BUILD b/rust/platform/BUILD
index c0e5204..5dfb945 100644
--- a/rust/platform/BUILD
+++ b/rust/platform/BUILD
@@ -1,5 +1,5 @@
-load(":platform.bzl", "declare_config_settings")
 load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+load(":platform.bzl", "declare_config_settings")
 
 package(default_visibility = ["//visibility:public"])
 
@@ -15,5 +15,5 @@
 bzl_library(
     name = "rules",
     srcs = glob(["**/*.bzl"]),
-    visibility = ["//rust:__pkg__"],
+    visibility = ["//rust:__subpackages__"],
 )