studio: Fix spurious autocompleter's context switch
compiler: General enhancements of the "expandToAsebaTree" pass

Due to memory leaks, the following changes were done to enhance
the lisibility and maintainability of the "expandToAsebaTree" pass:

- The pass was divided in two distinct passes. The first pass expands
  abstract nodes (one without corresponding bytecode) into
  emitable nodes. The second pass expands vectorial trees into
  several scalar trees.
- Rules for memory management inside these passes were edicted
- The inline documentation was expanded, with examples
- Related memory leaks were fixed
tests: Add a unit test to check memleaks inside the compiler, using valgrind
tests: Use a multiprocess pool for the valgrind test
compiler: Fix racy memory management

Given an std::auto_ptr<> foo, it is a mistake to perform

foo.reset(function(...,foo.release()));

as during the execution of function(), the object pointed by foo
is no longer protected against memory leaks. If an exception occurs
during the execution of function(), the object will not be freed,
which is not the expected behaviour. To protect against this,
rely on an intermediate pointer:

Pointer* temp = function(..., foo.get());
foo.release();
foo.reset(temp);

Two such occurances effectively gave memory leaks, but also fix
the other race windows as someone may add whatever exception to the
excecuted function without realizing the memory leak at the upper level.
compiler: Fix another memleak

If an exception occurs during the vectorial expansion,
the newly created tree is not correctly freed. I am gulty :(
compiler: Fix a racy memleak window
Merge branch 'fixes-for-1.3'