[Main] Add (disabled) program execution call

The program execution call has been added but it is keept disabled to
speed-up program build time testing.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[Makefile] Add testing targets

This adds a set of code generation profiling tests which are suitable to
evaluate the time required to generate code and build some reference
programs.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_DEBUG] Add step jump points

All steps are marked with 0-indexed a jump label with name "step_NNNN".
An set of all such jump labels is also defined as a function local
array. Such array could be conveniently used to:
1. jump straight to the execution of specified 0-indexed step;
2. check if we are executing a specified 0-indexed step, for example to
   stop in debug mode once a certain step has been executed.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_DEBUG] Add StepInto

The StepInto function allows to define where to jump at PCB loop start,
thus allowing to recover the execution from a specified execution step.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_DEBUG] Expose PCB steps to PCB internal methods

The array of PCB steps is defined locally to the Loop method, thus allowing
the compiler to setup reference to labels.
In order to allows PCB internal methods to access these steps references,
a pointer to such array is exported to a PCB protected attribute.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[Generator] Using 0 based STEPS counting

The step counter is 0-indexed since this is more suitable to better
support the Jump/Debugging code.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_DEBUG] Add StepOut support

The StepOut function allows to define where to stop in DEBUG mode, thus
allowing to execute up to a specified step and than block waiting for a
continue/repeat debug action.

To this purpose, the Step wrapper template has been extended to get a constant
non-type parameter which is used to identify the step being called and thus
making such an ID available to the PCB internal methods (i.e. CheckDebug) to
verify if the current step has been marked with a breakpoint (i.e. stepout).

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_DEBUG] Reset StepInto/Out on debug end

The steps IDs for step into and out are reset each time a debug session
is ended.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_DEBUG] Keep track of loop_start jump

The jump forward code which is available at the beginning of each loop
is reference by the loop_start label. This label is appended to the
steps jumps array for possible further usages.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_DEBUG] Keep track of steps count within base class

The PCB base class could be interested in knowing the number of steps
available in a Loop. This value is now saved into a protected local variable.

Signed-off-by: Patrick Bellasi <derkling@gmail.com>
[PCB_DEBUG] Add DebugFrom support

A new API has been added to allow jumps straight to a specified step.
If the specified step is greater than the maximum allowed number, execution
resume from the first step.

NOTE: the specified step is executed and than DEBUG mode is entered.

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