Skeleton for functional tests

Not much at the moment but I think this covers two very helpful scenarios:

  - Creating new tests becomes trivial, just create a `.mjs` file in the `test/functional` directory
  - They are basically code snippets so they also serve as documentation

Specific tests can be run using a regular expression, ie: `mocha -R spec -g 'functional if'  test`. If the shell environment variable `VERBOSE` is set to something and the test fails after it's been compiled into javascript, the generated code will be also printed, so it becomes very easy to debug code generation too.

<del>Note that I introduced the `#doc` macro in the common library, please feel free to modify it or suggest an alternative approach. Since unassigned string literals get removed from the AST I had to introduce the macro, but it would be even nicer if it wasn't required.</del>
I've finally solved the issue by assigning any *literate* multiline strings to the current parser block `__doc__` property.

I also refactored the `build-tests.js` to run as part of the pre-test task, previously it was modelled as a test suite, which forced to run the test twice to actually see any changes applied.