Improved the build binary by interacting with the user.

Now the build tells when it finished, and if it was with success or not.
Mainly updated the grammars regarding the latest version of PEG.js.

# Updated dependencies in package definition

- for safety, I precised the main versions of the libraries used
- the dependency for PEG.js is not over GitHub anymore, since they released a new version in npm

The update to the latest PEG.js version required some changes in the grammars.

# Prepared support for alternative parsers

- improved the grammar builder function to be able to build several parsers per mode
- in AT-HTML mode, made the validator common to all parsers, by moving it a level up: it makes more sense and can be available for alternative parsers

Also, it's now the NodeInstancier instance which gives access to the Node class in the grammars, so that it could be made configurable at instancier creation.

# Other

- I also removed some old useless files by the way.
- I updated the duration limit of a test which was always failing on my machine (the performance impact is not big)
Added benchmarks.

A new utility has been created in tests, in order to run benchmarks.

This utility relies on a benchmarking library, and mainly takes care of getting the inputs and displaying the results.

For now it can use two benchmarking libraries:

- the renowned benchmark.js library
- a custom one developed internally, to have more control on how to benchmark and get significant results

It uses the second by default.

Here are the changes that have been done along with that:

- added npm script definition tun run the benchmarks
- added development dependencies for testing, mainly benchmarking
- added inputs to benchmark the parsers HTML and AT-HTML
Optimized a lot the parsers.

# Line and column removal

No more call to line() and column() PEG.js methods are made from the parsers: they were detected as being too expensive.

This implied changing some things in the implementation:

- in the Node class and more generally node module, use of lines and columns have been commented
- in the web application, the annotations put to the editors for validation were using the line and column information: we now use the Ace API to compute them from the index information instead

Tests have also been updated, since the resulting graph doesn't contain anymore the line and column information, so they must be removed from the expected results specifications.

# Node optimization

The Node class is defined using the OOP library, which can provide nice features in terms of API. Unfortunately, one of these features was really expensive, and impacted the construction of the nodes: when you build an average of 20,000 nodes for a HTML file of 1500 lines, the overhead becomes monstruous. However there is a gain even for smaller files, and for every parser since it's related to Node only.

There is now a ligther Node implementation, which modifies only a few things: mainly for node creation, but also for node insertion.

In order not to copy code, a full refactoring has been made:

- there is now a dedicated folder for the whole `node` module
- class definitions have been split into files
- the two nodes implementations share a common base definition for their classes

Finally, and this is something important for this to be used: the NodeInstancier now gets an options at its creation, to choose which node implementation to use.

So now, the grammars use a NodeInstancier instance configured to use the light Node implementation.

# IMPORTANT change in the AT-HTML parser build

Now the AT-HTML parser is built using the PEG.js option `cache` set to `true`. It can make the parser slower as written in the documentation, but it resolved the issue of the parser never finishing parsing some inputs (so what they say in the documentation is true).

Thus I:

- enabled more inputs for benchmarks as now they work, and in acceptable time
- changed a timeout limit in the test of a rule for AT-HTML (maybe slower because if the activated option)