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 catching recursive definitions. 
Proper functioning is checked by two new test cases.