Upgrade to newer Node.js versions, drop Node.js 4 and 7
The target [`javascript/nodejs7`](https://github.com/kaitai-io/ci_artifacts/tree/javascript/nodejs7/test_out/javascript) is currently broken in our CI. It is caused by the assertion failure of the [test `ExprOpsParens`](https://github.com/kaitai-io/kaitai_struct_tests/blob/master/formats/expr_ops_parens.ksy) that was recently added. The way that the `./ci-javascript` script breaks is really strange: the only error that gets dumped is that the Ruby XML parser detects [invalid XML](https://travis-ci.org/github/kaitai-io/ci_targets/jobs/670952504#L568-L577). And indeed, looking into the [XML test results](https://github.com/kaitai-io/ci_artifacts/blob/f63aefcb4ce748d19b5e1050e5465ea0b3cb321e/test_out/javascript/test-output-javascript.xml#L78) from Mocha, it just gets terminated after running the ExprOpsParens test.

I can reproduce it on my local environment as well: it seems that doing anything like `assert.strictEqual(2, "2");` (number and string) causes Mocha XUnit builder to break internally, dumping results to the console still works normally.

I asked NodeJS to print the uncaught exception by doing

```javascript
process.on('uncaughtException', function(err) {
  console.log(err);
});
```

and got this:

<details>
  <summary>Mocha XUnit reporter uncaught error</summary>

```
TypeError: value.split is not a function
    at Diff.lineDiff.tokenize (D:\temp\kaitai_struct\tests\node_modules\diff\lib\diff\line.js:19:32)
    at Diff.diff (D:\temp\kaitai_struct\tests\node_modules\diff\lib\diff\base.js:36:39)
    at diffLines (D:\temp\kaitai_struct\tests\node_modules\diff\lib\diff\line.js:44:19)
    at structuredPatch (D:\temp\kaitai_struct\tests\node_modules\diff\lib\patch\create.js:20:83)
    at createTwoFilesPatch (D:\temp\kaitai_struct\tests\node_modules\diff\lib\patch\create.js:126:14)
    at Object.createPatch (D:\temp\kaitai_struct\tests\node_modules\diff\lib\patch\create.js:146:10)
    at unifiedDiff (D:\temp\kaitai_struct\tests\node_modules\mocha\lib\reporters\base.js:418:18)
    at Function.exports.generateDiff (D:\temp\kaitai_struct\tests\node_modules\mocha\lib\reporters\base.js:181:7)
    at XUnit.test (D:\temp\kaitai_struct\tests\node_modules\mocha\lib\reporters\xunit.js:167:23)
    at D:\temp\kaitai_struct\tests\node_modules\mocha\lib\reporters\xunit.js:105:12
    at Array.forEach (<anonymous>)
    at Runner.<anonymous> (D:\temp\kaitai_struct\tests\node_modules\mocha\lib\reporters\xunit.js:104:11)
    at Object.onceWrapper (events.js:286:20)
    at Runner.emit (events.js:203:15)
    at D:\temp\kaitai_struct\tests\node_modules\mocha\lib\runner.js:890:12
    at D:\temp\kaitai_struct\tests\node_modules\mocha\lib\runner.js:762:9
    at next (D:\temp\kaitai_struct\tests\node_modules\mocha\lib\runner.js:362:14)
    at Immediate.<anonymous> (D:\temp\kaitai_struct\tests\node_modules\mocha\lib\runner.js:415:5)
    at runCallback (timers.js:705:18)
    at tryOnImmediate (timers.js:676:5)
    at processImmediate (timers.js:658:5)
```

</details>

It seems like this issue has been already resolved in Mocha (in  https://github.com/mochajs/mocha/commit/1412dc80d87d0479f7f1d60202da2b33c90eb939#diff-d80a115516f0cc2ec0b46a54c60077fa), but it's available only since version 7.0.0 that's no longer compatible with NodeJS 7 we use in CI for testing.

I think we can't really do much to fix this, but I'd suggest another thing. We should probably finally switch to some newer versions of NodeJS. Node.js versions 4 and 7 are pretty much old and deprecated, most projects have already dropped their support for them, and it's probably not worth the trouble to desparately try to save them from extinction. The problem with the deprecated version is that we're pretty much against the rest of the world and when we have some problem with some third party library or even the Node itself, nobody's gonna help us.

@GreyCat, @koczkatamas, @cherue, @jchv  What do you think? I'm just wondering if there's some reason for testing against such old versions, because if isn't, I see no reason for not upgrading.

Looking on the Node.js [release version cycle](https://nodejs.org/en/about/releases/), I'd go for Node.js 8 as "compatibility version" (it has reached End-Of-Life on December 2019 though, but I assume projects potentially using Kaitai Struct do not adapt so quickly) and Node.js 12, being currently the latest LTS version (recommended for production use). I think there's no point supporting any older ones.