Fix version of test seed branches to specific revisions. Only clone if necessary.

This PR tries to do `update-ref` on each branch of `gitlab-test` to fixed versions, and only then fetches. This achieves the following goals:

- no more need to use the network to run tests. Continuation of and rationale at: https://github.com/gitlabhq/gitlabhq/pull/7823

- tests cannot break spuriously on old branches. Before this pull, changes to gitlab-test could break your tests at any time. Not anymore since we use `update-ref`. This is only possible because we have fixed the versions of each branch.

- makes it easier to develop gitlab-test together with new tests: this PR generates a non bare version of gitlab-test at `tmp/test/gitlab-test` which you can edit and use with new test cases immediately.
Never use `unless` with `else`. Rewrite these with the positive case first.<br>Do not use `%W` unless interpolation is needed.  If not, use `%w`.