[RDY] Setup functional testing infrastructure using vroom

For those who don't know, [vroom](https://github.com/google/vroom) is very nice DSL for testing Vim, and since google/vroom#30 it has Neovim support
. 
The best way to get started with vroom is by reading [basic.vroom](https://github.com/google/vroom/blob/master/examples/basics.vroom), it's very short and gives a good explanation of the basic syntax. [This plugin](https://github.com/google/vim-ft.vroom) adds basic settings to vroom files

One goal of this PR is to setup a new infrastructure for writing functional tests on top of vroom, and start migrating the old tests(src/testdir) to run on top of it. Another goal is to setup some standards for writing functional tests in a more documented/readable way. I've done it to test2 as an example.

The biggest reason for using vroom is that tests are really natural to write and read, but it also has other advantages:

- It is implemented in python and uses the python-client to communicate with Neovim. That means we'll be testing user input through the msgpack-rpc API, which is the same way GUIs will feed input(The current tests are executed by sourcing scripts. Even if code responsible for reading input fails the tests may succeed)
- It uses a specialized DSL so there's no possibility of breaking tests due to API changes.
- We can extend the DSL to enable checking for visual features such as syntax and windows boundaries(this will be done after #781)

CC @justinmk @aktau @dbarnett @equalsraf
if we're going to put these in a `/legacy/` subfolder, they might as well live at `test/legacy/` instead of `test/functional/legacy/`. Then the implication is that `test/functional/` contains non-legacy tests.