Implement setting an object's property dynamically with strings

While developing a plugin I had to set properties, 
which were not  declared for the object, 
resulting in a parser/compiler exception.
(which is expected behavior)

While using dynamic properties, 
I  discovered that things like
setting properties as string directly
```zephir
let this->{"test"} = "value";
```
were not implemented yet.

The attempt to workaround this by 
using variable addressing also failed
```zephir
var prop = "test";
let this->{prop} = "value";
```

The final workaround would be:
```zephir
var val = "test";
var prop = "test";
let this->{prop} = val;
```
which would be too much to write.

These issues are fixed by the following changes,
which didn't seem to break any unit tests, and
also pass the ones I included.

Why do you replace `zephir_update_property_this` by `zephir_update_property_zval`. I don't know difference, but it's weird.