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.

@nkt 
without update_val the first of my unit tests fails:
```
$class->setPropertyInt("property");
var_dump($class);
```
results in
```
["test"] => bool(false)
```
So i seem to recall the issue correctly.