Remove unnecessary wrapper macro for expand_template rule (#365)

Followup to #330: remove the wrapper macro and export the rule directly; the macro
does not serve any useful function. As a side effect, this fixes the inability to
set tags etc., since the macro did not support **kwargs.
diff --git a/docs/expand_template_doc.md b/docs/expand_template_doc.md
index b086829..b370135 100755
--- a/docs/expand_template_doc.md
+++ b/docs/expand_template_doc.md
@@ -8,26 +8,25 @@
 ## expand_template
 
 <pre>
-expand_template(<a href="#expand_template-name">name</a>, <a href="#expand_template-template">template</a>, <a href="#expand_template-substitutions">substitutions</a>, <a href="#expand_template-out">out</a>)
+expand_template(<a href="#expand_template-name">name</a>, <a href="#expand_template-out">out</a>, <a href="#expand_template-substitutions">substitutions</a>, <a href="#expand_template-template">template</a>)
 </pre>
 
 Template expansion
 
-This performs a simple search over the template file for the keys in substitutions,
-and replaces them with the corresponding values.
+This performs a simple search over the template file for the keys in
+substitutions, and replaces them with the corresponding values.
 
-There is no special syntax for the keys.
-To avoid conflicts, you would need to explicitly add delimiters to the key strings, for example "{KEY}" or "@KEY@".
+There is no special syntax for the keys. To avoid conflicts, you would need to
+explicitly add delimiters to the key strings, for example "{KEY}" or "@KEY@".
+
+**ATTRIBUTES**
 
 
-**PARAMETERS**
-
-
-| Name  | Description | Default Value |
-| :------------- | :------------- | :------------- |
-| <a id="expand_template-name"></a>name |  The name of the rule.   |  none |
-| <a id="expand_template-template"></a>template |  The template file to expand   |  none |
-| <a id="expand_template-substitutions"></a>substitutions |  A dictionary mapping strings to their substitutions   |  none |
-| <a id="expand_template-out"></a>out |  The destination of the expanded file   |  none |
+| Name  | Description | Type | Mandatory | Default |
+| :------------- | :------------- | :------------- | :------------- | :------------- |
+| <a id="expand_template-name"></a>name |  A unique name for this target.   | <a href="https://bazel.build/docs/build-ref.html#name">Name</a> | required |  |
+| <a id="expand_template-out"></a>out |  The destination of the expanded file.   | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | required |  |
+| <a id="expand_template-substitutions"></a>substitutions |  A dictionary mapping strings to their substitutions.   | <a href="https://bazel.build/docs/skylark/lib/dict.html">Dictionary: String -> String</a> | required |  |
+| <a id="expand_template-template"></a>template |  The template file to expand.   | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | required |  |
 
 
diff --git a/rules/expand_template.bzl b/rules/expand_template.bzl
index 58f1920..96bff44 100644
--- a/rules/expand_template.bzl
+++ b/rules/expand_template.bzl
@@ -22,34 +22,29 @@
         substitutions = ctx.attr.substitutions,
     )
 
-_expand_template = rule(
+expand_template = rule(
     implementation = _expand_template_impl,
+    doc = """Template expansion
+
+This performs a simple search over the template file for the keys in
+substitutions, and replaces them with the corresponding values.
+
+There is no special syntax for the keys. To avoid conflicts, you would need to
+explicitly add delimiters to the key strings, for example "{KEY}" or "@KEY@".""",
     attrs = {
-        "template": attr.label(mandatory = True, allow_single_file = True),
-        "substitutions": attr.string_dict(mandatory = True),
-        "out": attr.output(mandatory = True),
+        "template": attr.label(
+            mandatory = True,
+            allow_single_file = True,
+            doc = "The template file to expand.",
+        ),
+        "substitutions": attr.string_dict(
+            mandatory = True,
+            doc = "A dictionary mapping strings to their substitutions.",
+        ),
+        "out": attr.output(
+            mandatory = True,
+            doc = "The destination of the expanded file.",
+        ),
     },
     output_to_genfiles = True,
 )
-
-def expand_template(name, template, substitutions, out):
-    """Template expansion
-
-    This performs a simple search over the template file for the keys in substitutions,
-    and replaces them with the corresponding values.
-
-    There is no special syntax for the keys.
-    To avoid conflicts, you would need to explicitly add delimiters to the key strings, for example "{KEY}" or "@KEY@".
-
-    Args:
-      name: The name of the rule.
-      template: The template file to expand
-      out: The destination of the expanded file
-      substitutions: A dictionary mapping strings to their substitutions
-    """
-    _expand_template(
-        name = name,
-        template = template,
-        substitutions = substitutions,
-        out = out,
-    )