allow for recursive evaluation of properties

Recursive evaluation of properties, i.e. 
<xacro:property name="a" value="42"/>
<xacro:property name="a2" value="${2*a}"/>

should work. Currently, ${a2} literally gives "${2*a}" instead of "84".
This patch adds this feature, correctly handling recursive definitions. 
Proper functioning is checked by two new test cases.