Make the ./publish script reusable instead of "vendoring" it everywhere
Right now, we have the `./publish` shell script **vendored** (i.e. copied) in every repo that needs to publish build results to some other repository _(on behalf of @kaitai-bot)_.

In fact, it seems that there are three versions of the script - I call them version **1**, **1.1** and **2**. 

Version **1.1** has one extra feature above **1**:
 - it proactively adds the GitHub RSA public key _(hardcoded in the script)_ to `~/.ssh/known_hosts` if it's not there

Version **2** has two extra features above **1.1**:
 - supports specifying non-default Git branch via `GH_REPO_BRANCH` bash variable _(used only in **ci_targets** repo though; in **kaitai_ci_ui** repo, there is just boring `GH_REPO_BRANCH=master`)_
 - if `rsync` is not found on `PATH`, it tries `/c/cygwin64/bin/rsync.exe`

Version **1**:

 - [**kaitai_struct_tests** / publish-targets](https://github.com/kaitai-io/kaitai_struct_tests/blob/3cb98ecd6d7793ce412d53b210bc6f4b595ed544/publish-targets)
 - [**kaitai_struct_webide** / publish](https://github.com/kaitai-io/kaitai_struct_webide/blob/7950b8df56dd36acaf56333add2aab270f439a37/publish)
 - [**kaitai_struct_doc** / publish](https://github.com/kaitai-io/kaitai_struct_doc/blob/e03f0b04de740015facf5acbcf6737ca54036161/publish)

Version **1.1**:

 - [**kaitai_struct_formats** / .github/publish](https://github.com/kaitai-io/kaitai_struct_formats/blob/53a38bd530bcb41d4eded7983cda61238046844b/.github/publish)

Version **2**:

 - [**kaitai_ci_ui** / publish](https://github.com/kaitai-io/kaitai_ci_ui/blob/51a7d6f5a10d4d69e2dc1f0aaa6c51310b8659bc/publish)
 - [**ci_targets** / publish](https://github.com/kaitai-io/ci_targets/blob/6aca1b7283577518a378a52f84387d86d7f646c6/publish)

I think that it totally makes sense to have a `publish` script in only one place and use it from all these repos.

Of course, we would need to make it accept parameters - I think CLI args (`./publish --outdir _build/html/ --repo formats-kaitai-io.github.io`) are the way to go. Environment vars would be easier to implement, but less transparent, they can be set on various places.

I'm not sure where should be this generic `publish` script placed though - https://github.com/kaitai-io/kaitai_struct seems to be a logical place, but I'm thinking about adding the repo with the script as a Git submodule to all the repos _(which is IMHO better than `git clone`-ing the repo, `curl`ing the file from raw.githubusercontent.com or other perversities)_, and it wouldn't make much sense to **add `kaitai_struct`** as a submodule to repo `kaitai_struct_tests` for example (it's supposed to be the other way around).

So maybe create a dedicated repository just for the `publish` script?