Update documentation generation dependencies and regenerate (#95)

This updates to a recent version of Skydoc so that doc generation works on modern versions of Bazel.
diff --git a/docs/BUILD b/docs/BUILD
index f72a6ea..555d460 100644
--- a/docs/BUILD
+++ b/docs/BUILD
@@ -1,9 +1,10 @@
 # To regenerate html docs, run:
-#   ./update_docs.sh
+#   ../update_docs.sh
 
-load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc", "skylark_library")
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc")
 
-skylark_library(
+bzl_library(
     name = "subpar-rules",
     srcs = [
         "@subpar//:debug.bzl",
@@ -16,7 +17,7 @@
     format = "markdown",
     overview = True,
     site_root = ".",
-    deps = ["subpar-rules"],
+    srcs = [":subpar-rules"],
 )
 
 skylark_doc(
@@ -24,5 +25,5 @@
     format = "html",
     overview = True,
     site_root = ".",
-    deps = ["subpar-rules"],
+    srcs = [":subpar-rules"],
 )
diff --git a/docs/WORKSPACE b/docs/WORKSPACE
index 77a5e97..23bddbd 100644
--- a/docs/WORKSPACE
+++ b/docs/WORKSPACE
@@ -1,28 +1,40 @@
 workspace(name = "subpar_docs")
 
+load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
+
 local_repository(
     name = "subpar",
     path = "..",
 )
 
-# Dependency of skydoc
-git_repository(
-    name = "io_bazel_rules_sass",
-    remote = "https://github.com/bazelbuild/rules_sass.git",
-    tag = "0.0.3",
-)
+# Skydoc / stardoc and dependencies.
 
-load("@io_bazel_rules_sass//sass:sass.bzl", "sass_repositories")
-
-sass_repositories()
-
-# Used to create documentation
 git_repository(
     name = "io_bazel_skydoc",
     remote = "https://github.com/bazelbuild/skydoc.git",
-    commit = "b36d22cc4436a7a7933e36a111bfc00fd494b9fb",
+    commit = "13063139c7c2bca7c725f382fa1e78bdfe93c887",  # 2019-02-27
 )
 
-load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories")
+# This initialization comes from Stardoc's WORKSPACE file as of commit
+# 13063139c7c2bca7c725f382fa1e78bdfe93c887.
 
+load("@io_bazel_skydoc//:setup.bzl", "skydoc_repositories")
 skydoc_repositories()
+
+load("@io_bazel_rules_sass//:package.bzl", "rules_sass_dependencies")
+rules_sass_dependencies()
+
+load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories")
+node_repositories()
+
+load("@io_bazel_rules_sass//:defs.bzl", "sass_repositories")
+sass_repositories()
+
+# This definition is also needed for (legacy) Skydoc.
+# TODO(#93): Migrate to Stardoc.
+
+git_repository(
+    name = "com_google_protobuf",
+    remote = "https://github.com/protocolbuffers/protobuf.git",
+    commit = "7b28271a61a3da0a37f6fda399b0c4c86464e5b3",  # 2018-11-16
+)
diff --git a/docs/index.html b/docs/index.html
index f46d709..d685f9e 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -70,7 +70,7 @@
   </ul>
 </nav>
 
-<h2><a href="./debug.html">debug Rules</a></h2>
+<h2><a href="./debug.html" id="debug">debug Rules</a></h2>
 
 <h3>Macros</h3>
 <table class="overview-table">
@@ -92,7 +92,7 @@
     </tr>
   </tbody>
 </table>
-<h2><a href="./subpar.html">Build self-contained python executables.</a></h2>
+<h2><a href="./subpar.html" id="subpar">Build self-contained python executables.</a></h2>
 
 <h3>Rules</h3>
 <table class="overview-table">
diff --git a/docs/index.md b/docs/index.md
index a62b873..f4f0c2b 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,7 +10,7 @@
   </ul>
 </nav>
 
-<h2><a href="./debug.html">debug Rules</a></h2>
+<h2><a href="./debug.html" id="debug">debug Rules</a></h2>
 
 <h3>Macros</h3>
 <table class="overview-table">
@@ -32,7 +32,7 @@
     </tr>
   </tbody>
 </table>
-<h2><a href="./subpar.html">Build self-contained python executables.</a></h2>
+<h2><a href="./subpar.html" id="subpar">Build self-contained python executables.</a></h2>
 
 <h3>Rules</h3>
 <table class="overview-table">
diff --git a/docs/main.css b/docs/main.css
index f506e12..89f66fe 100755
--- a/docs/main.css
+++ b/docs/main.css
@@ -1,3 +1 @@
-body{background-color:#fafafa}pre,code{font-family:'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:80px;margin-bottom:80px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media (max-width: 768px){.page-content{width:360px}}@media (min-width: 768px){.page-content{width:760px}}@media (min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px}
-
-/*# sourceMappingURL=main.css.map */
\ No newline at end of file
+body{background-color:#fafafa}pre,code{font-family:"Liberation Mono",Consolas,Monaco,"Andale Mono",monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media(max-width: 768px){.page-content{width:360px}}@media(min-width: 768px){.page-content{width:760px}}@media(min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px}/*# sourceMappingURL=main.css.map */
diff --git a/docs/subpar.html b/docs/subpar.html
index 1009446..d1fc5d1 100644
--- a/docs/subpar.html
+++ b/docs/subpar.html
@@ -77,7 +77,7 @@
 
           <h2 id="par_binary">par_binary</h2>
 
-          <pre>par_binary(<a href="#par_binary.name">name</a>)</pre>
+          <pre>par_binary(<a href="#par_binary.name">name</a>, <a href="#par_binary.**kwargs">**kwargs</a>)</pre>
 
           <p>An executable Python program.</p>
 <p>par_binary() is a drop-in replacement for py_binary() that also
@@ -106,13 +106,20 @@
         <p>A unique name for this rule.</p>
       </td>
     </tr>
+    <tr id="par_binary.**kwargs">
+      <td><code>**kwargs</code></td>
+      <td>
+        <p><code>Unknown; Optional</code></p>
+        
+      </td>
+    </tr>
   </tbody>
 </table>
           <hr>
 
           <h2 id="par_test">par_test</h2>
 
-          <pre>par_test(<a href="#par_test.name">name</a>)</pre>
+          <pre>par_test(<a href="#par_test.name">name</a>, <a href="#par_test.**kwargs">**kwargs</a>)</pre>
 
           <p>An executable Python test.</p>
 <p>Just like par_binary, but for py_test instead of py_binary.  Useful if you
@@ -134,13 +141,20 @@
         <p>A unique name for this rule.</p>
       </td>
     </tr>
+    <tr id="par_test.**kwargs">
+      <td><code>**kwargs</code></td>
+      <td>
+        <p><code>Unknown; Optional</code></p>
+        
+      </td>
+    </tr>
   </tbody>
 </table>
           <hr>
 
           <h2 id="parfile">parfile</h2>
 
-          <pre>parfile(<a href="#parfile.name">name</a>, <a href="#parfile.src">src</a>, <a href="#parfile.compiler">compiler</a>, <a href="#parfile.default_python_version">default_python_version</a>, <a href="#parfile.imports">imports</a>, <a href="#parfile.main">main</a>, <a href="#parfile.zip_safe">zip_safe</a>)</pre>
+          <pre>parfile(<a href="#parfile.name">name</a>, <a href="#parfile.src">src</a>, <a href="#parfile.compiler">compiler</a>, <a href="#parfile.compiler_args">compiler_args</a>, <a href="#parfile.default_python_version">default_python_version</a>, <a href="#parfile.imports">imports</a>, <a href="#parfile.main">main</a>, <a href="#parfile.zip_safe">zip_safe</a>)</pre>
 
           <p>A self-contained, single-file Python program, with a .par file extension.</p>
 <p>You probably want to use par_binary() instead of this.</p>
@@ -177,6 +191,13 @@
         <p>Internal use only.</p>
       </td>
     </tr>
+    <tr id="parfile.compiler_args">
+      <td><code>compiler_args</code></td>
+      <td>
+        <p><code>List of strings; Optional; Default is []</code></p>
+        
+      </td>
+    </tr>
     <tr id="parfile.default_python_version">
       <td><code>default_python_version</code></td>
       <td>
@@ -218,7 +239,7 @@
 
           <h2 id="parfile_test">parfile_test</h2>
 
-          <pre>parfile_test(<a href="#parfile_test.name">name</a>, <a href="#parfile_test.src">src</a>, <a href="#parfile_test.compiler">compiler</a>, <a href="#parfile_test.default_python_version">default_python_version</a>, <a href="#parfile_test.imports">imports</a>, <a href="#parfile_test.main">main</a>, <a href="#parfile_test.zip_safe">zip_safe</a>)</pre>
+          <pre>parfile_test(<a href="#parfile_test.name">name</a>, <a href="#parfile_test.src">src</a>, <a href="#parfile_test.compiler">compiler</a>, <a href="#parfile_test.compiler_args">compiler_args</a>, <a href="#parfile_test.default_python_version">default_python_version</a>, <a href="#parfile_test.imports">imports</a>, <a href="#parfile_test.main">main</a>, <a href="#parfile_test.zip_safe">zip_safe</a>)</pre>
 
           <p>Identical to par_binary, but the rule is marked as being a test.</p>
 <p>You probably want to use par_test() instead of this.</p>
@@ -253,6 +274,13 @@
         <p>Internal use only.</p>
       </td>
     </tr>
+    <tr id="parfile_test.compiler_args">
+      <td><code>compiler_args</code></td>
+      <td>
+        <p><code>List of strings; Optional; Default is []</code></p>
+        
+      </td>
+    </tr>
     <tr id="parfile_test.default_python_version">
       <td><code>default_python_version</code></td>
       <td>
diff --git a/docs/subpar.md b/docs/subpar.md
index 1d71527..aaf19ab 100644
--- a/docs/subpar.md
+++ b/docs/subpar.md
@@ -21,7 +21,7 @@
 ## par_binary
 
 <pre>
-par_binary(<a href="#par_binary.name">name</a>)
+par_binary(<a href="#par_binary.name">name</a>, <a href="#par_binary.**kwargs">**kwargs</a>)
 </pre>
 
 An executable Python program.
@@ -56,13 +56,20 @@
         <p>A unique name for this rule.</p>
       </td>
     </tr>
+    <tr id="par_binary.**kwargs">
+      <td><code>**kwargs</code></td>
+      <td>
+        <p><code>Unknown; Optional</code></p>
+        
+      </td>
+    </tr>
   </tbody>
 </table>
 <a name="par_test"></a>
 ## par_test
 
 <pre>
-par_test(<a href="#par_test.name">name</a>)
+par_test(<a href="#par_test.name">name</a>, <a href="#par_test.**kwargs">**kwargs</a>)
 </pre>
 
 An executable Python test.
@@ -88,13 +95,20 @@
         <p>A unique name for this rule.</p>
       </td>
     </tr>
+    <tr id="par_test.**kwargs">
+      <td><code>**kwargs</code></td>
+      <td>
+        <p><code>Unknown; Optional</code></p>
+        
+      </td>
+    </tr>
   </tbody>
 </table>
 <a name="parfile"></a>
 ## parfile
 
 <pre>
-parfile(<a href="#parfile.name">name</a>, <a href="#parfile.src">src</a>, <a href="#parfile.compiler">compiler</a>, <a href="#parfile.default_python_version">default_python_version</a>, <a href="#parfile.imports">imports</a>, <a href="#parfile.main">main</a>, <a href="#parfile.zip_safe">zip_safe</a>)
+parfile(<a href="#parfile.name">name</a>, <a href="#parfile.src">src</a>, <a href="#parfile.compiler">compiler</a>, <a href="#parfile.compiler_args">compiler_args</a>, <a href="#parfile.default_python_version">default_python_version</a>, <a href="#parfile.imports">imports</a>, <a href="#parfile.main">main</a>, <a href="#parfile.zip_safe">zip_safe</a>)
 </pre>
 
 A self-contained, single-file Python program, with a .par file extension.
@@ -136,6 +150,13 @@
         <p>Internal use only.</p>
       </td>
     </tr>
+    <tr id="parfile.compiler_args">
+      <td><code>compiler_args</code></td>
+      <td>
+        <p><code>List of strings; Optional; Default is []</code></p>
+        
+      </td>
+    </tr>
     <tr id="parfile.default_python_version">
       <td><code>default_python_version</code></td>
       <td>
@@ -177,7 +198,7 @@
 ## parfile_test
 
 <pre>
-parfile_test(<a href="#parfile_test.name">name</a>, <a href="#parfile_test.src">src</a>, <a href="#parfile_test.compiler">compiler</a>, <a href="#parfile_test.default_python_version">default_python_version</a>, <a href="#parfile_test.imports">imports</a>, <a href="#parfile_test.main">main</a>, <a href="#parfile_test.zip_safe">zip_safe</a>)
+parfile_test(<a href="#parfile_test.name">name</a>, <a href="#parfile_test.src">src</a>, <a href="#parfile_test.compiler">compiler</a>, <a href="#parfile_test.compiler_args">compiler_args</a>, <a href="#parfile_test.default_python_version">default_python_version</a>, <a href="#parfile_test.imports">imports</a>, <a href="#parfile_test.main">main</a>, <a href="#parfile_test.zip_safe">zip_safe</a>)
 </pre>
 
 Identical to par_binary, but the rule is marked as being a test.
@@ -216,6 +237,13 @@
         <p>Internal use only.</p>
       </td>
     </tr>
+    <tr id="parfile_test.compiler_args">
+      <td><code>compiler_args</code></td>
+      <td>
+        <p><code>List of strings; Optional; Default is []</code></p>
+        
+      </td>
+    </tr>
     <tr id="parfile_test.default_python_version">
       <td><code>default_python_version</code></td>
       <td>