Vue3 migration: introduce compatibilty with @vue/compat for gitlab-ui
`gitlab-ui` as a component library is one of the key dependencies we should make running with Vue3.
# :thinking: What does `compatibility` means for us?
Migration will definitely be a long and painful process :smile: Our main idea is to try out an approach, when we are keeping single codebase which is compatible with Vue 2 and Vue 3. In this case we could slowly dogfood migration as long as we need that
~~We could drop and re-consider this approach as soon as we realize that efforts required to maintain compatibility are too big~~
We were able to reach significant results with this strategy
Steps to take:
* [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1638 Upgrade to latest `@vue/test-utils` 1.x as first step (done by @xanf)
* [x] Ensure compatibility of `bootstrap-vue` with `@vue/compat` as our main and only Vue-related dependency (except `portal-vue` which has native implementation in Vue 3) :white_check_mark: done in https://github.com/bootstrap-vue/bootstrap-vue/pull/6905 by @xanf
* [x] Discover and fix any upstream inconsistencies which could prevent us from migration :white_check_mark:
* [x] Make sure we can run our test suite for `@vue/compat` build. https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/3087+ by @xanf
* [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1639 Remove `localVue` usage
* [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1640 Remove unneeded `wrapper.destroy` calls
* [x] Introduce changes which are forward-compatible with Vue 3 to existing `gitlab-ui` codebase (https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1981 by @xanf)
* [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1983+
* [x] Make sure storyshots properly works for vue 3
* [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1984+
* [x] requires https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1719+ to be implemented - this will allow us to automatically verify that vue2 and vue3 snapshots in our tests are identical
* [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1985+
Known issues:
* :white_check_mark: `bootstrap-vue` failed to release Vue 3 support, so it will require additional effort to have it running
* implemented this support from scratch in https://github.com/bootstrap-vue/bootstrap-vue/pull/6905
* :white_check_mark: `@vue/test-utils` 1.x heavily rely on internals of Vue 2.x rendering them unusable with `@vue/compat`
* added and maintaining support of @vue/compat to `@vue/test-utils` v2 (>50 PRs https://github.com/vuejs/test-utils/pulls?q=is%3Apr+author%3Axanf+)
* created [vue-test-utils-compat](https://www.npmjs.com/package/vue-test-utils-compat) package which allows running tests written for `@vue/test-utils` v1 with v2
* :warning: storybook addon (readme) was not updated to Vue3
epic