[Generator] Add PRODUCT generator

This is a first version of an XML-to-product generator.
A generic multi-PCB and multi-program product could be defined using a
simplified (and perhaps optimized) XML schema similar to the one provided
by the example.

The Product builder will generate:
1. three files for each PCB, containing the SETUP, CLEAN and STEPS code
   fragments, as well as a main file for each of the XML defined
   Program Control Blocks
2. one file for each Program, containing the SyncBuffers allocation, the
   definition and configuration of PCBs and their connections. This file
   exposes a single entry point which allows to invoke such a program.
3. a pair of header and source PRODUCT files which exposes the single
   entry point "int product_run(int program_id)" which allows to select
   and run the program specified by ID

NOTE: This generator is based on the assumption to use local buffers in place of
using BufferManager assigned ones.

The provided example XML product defined two different programs, with different
network complexities:
1. a simple three stage pipeline
2. a four stage pipeline with two parallel (double-stage) PCBs.<
These should be enough to verify the generality of the proposed solution.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[Core] Switch to new Product Generator

This patch update the main to make use of the new complete Generator.
The produced binary could accept at command line the numeric ID of the
program to run.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_Template] Bugfix loops termination

The loops counter has been moved to be an object member such that each
parallel PCB gets its own instance.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_Template] Report name on logging

The PCB name is reported in output for better readability.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[Core] Disable log statements in the step-wrapper

This is required to make the log more easy readable.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[ProductXML] Update example to use shorter names

By default, log statements uses 10 chars width. This renaming allows a
better logger readability.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
Update .gitignore

Ignore all the generated sources.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>