qibuildize
qibuildize: update README.md
cmake: build benchmarks by default
Merge branch 'qibuildize' into qibuild
Merge remote-tracking branch 'laas/master' into qibuild
Merge remote-tracking branch 'laas/master' into qibuild

Conflicts:
	benchmark/CMakeLists.txt
Merge remote-tracking branch 'laas/master' into qibuild
qiproject: drop gtest dependency
do not build the benchmark when cross-compiling

because one needs the model generator for the host first
Merge remote-tracking branch 'laas/master' into qibuild
Merge remote-tracking branch 'laas/master' into qibuild
add compareTexts helper function
add depth_first_traversal algorithm

First traversal algorithm. The hook names discover and finish are
inspired by boost::graph.

There are still some open questions:

- the traversal algorithm has some of duplication because it has to
  support overloads. Is there a better way? (one solution would be to
  resort to preprocessor tricks or to boost::preprocessor).

- Should we support const ref overloads too?
implement printTransforms with a visitor

I checked that it does not impact compile time.
implement printState with a visitor
add is_ancestor tool

this algorithm helps when checking user input and can also
replace a part of deepest_common_body
implement backward traversal

The Node template argument is actually a Body type. But, in the future,
the Node type will know its parent, so it will indeed be a Node.
add brackward_traversal_prev

This traversal traverses the tree backward and provides the
visitor with both the Node being visited and the previous one.

It is needed for crba. Contrary to backward_traverse, this
algorithm does not visit the StartNode, because the "PrevNode" parameter
would not have any sense.
implement crba using visitors

I checked that it has no impact on performance.
implement rnea with a visitor

The implementation is rather contrived because we need to
differentiate between root bodies and others.

We could make it more simple by changing depth_first_traversal
so that visitors take two template parameters: Node and PrevNode
similarly to backward_traversal.

PrevNode would be the parent of Node. It would le us specialize
easily the case of a root node:

    template <Node, PrevNode> struct Visitor;
    template <Node> struct Visitor<Node, NP> {};

Yet this modification would not cover the child-less node special
case:

on can imagine that in a recursive algorithm, when visiting a node
some work is done to prepare the children visit. It would be great to
skip this work when the node has no child.