Example:
$path = new PropertyPath('child.name');
echo $path->setValue($object, 'Fabien');
equals echo $object->getChild()->setName('Fabien');
This method first tries to find a public setter for each property in the
path. The name of the setter must be the camel-cased property name
prefixed with "set".
If the setter does not exist, this method tries to find a public
property. The value of the property is then changed.
If neither is found, an exception is thrown.