Support reporting coverage for tests

If `coverage` options is set, template files will be instrumented
before execution (can be enabled per-technology). If templates are
built with source map, there is an option to show coverage for
original files.
There is also an option to filter out some sources from report. By
default, all content of `node_modules` and `libs` will be omitted.

@andrewblond @arikon @j0tunn
Похожесть только видимая, на самом деле:
-  source достается из разных локаций (`start` для стейтментов и функций, `locations[0]` для бранчей)
- индексы берутся из разных переменных (`b`, `f`, `s`)
- метаданные записываются в разные объекты (`branchMap`, `functionMap`, `statementMap`)
- структура метаданных везде разная (для стейтмена – просто `start` и `end`, для функции `{name, loc: {start, end}}`, для ветвлений `{line, type, locations: [{start, end}]`)
- счетчики записываются в разные объекты `b`, `f`, `s`.