[issue 268] Detect the case (fixup will come later)

Add a helper function to detect if a MemoryVector with a given name
exists inside the tree. If the lhs appears also as a rhs inside an
AssignmentNode, a temporary variable should be added during
expandVectorialNodes():

foo = something with foo

should become

temp = something with foo
foo = temp

To add the temporary variable, we still need some more work, so for now
only detect this case.
[issue 268] Pass a pointer to the current compiler during expandVectorialNodes()

If we need to create a temporary variable, we need a way to access the
current compiler object, as it contains the memory maps and supporting
functions. The simplest solution is to pass Compiler* as an argument of
expandVectorialNodes().

NB: this appeals for a better mechanism. The memory managment could be
part of a dedicated class, accessed both by Compiler and Node classes.
This would be easier to manage, but we still would need a pointer to it.
[issue 268] Add a new constructor to AssignmentNode

We often need to assign lhs and rhs when creating a new AssignmentNode.
So instead of doing it by hand, create a custom constructor:

AssignmentNode(position, left, right)
[issue 268] Make AssignmentNode to be friend of Compiler

By doing so, AssignmentNode::expandVectorialNodes() can call
Compiler::allocateTemporaryVariable().
[issue 268] The final solution

Put it together, so we can allocate a temporary variable, tweak the
current assignment, and expand all the stuff correctly.
[issue 268] Add a unit test

Check with a problematic case.
Merge pull request #270 from vaussard/fix-issue-268/1.3

Fix issue 268
Merged fix from release branch.