Stricter error handling

This PR implements xp-framework/rfc#291

```php
$i++;                 // lang.NullPointerException("Undefined variable")
$a= []; $a[0];        // lang.IndexOutOfBoundsException("Undefined offset")
$m= []; $m['test'];   // lang.IndexOutOfBoundsException("Undefined index")
$s= ''; $s{0};        // lang.IndexOutOfBoundsException("Uninitialized string offset")
[1, 2].'String';      // lang.ClassCastException("Array to string conversion")
$f= function($arg) { }; $f(); // lang.IllegalArgumentException("Missing argument")
```