Catchable "Call to a member function bar() on a non-object"

This pull request turns fatal errors generated from calls to methods on a non-object into E_RECOVERABLE_ERRORs.

## Example

```php
set_error_handler(function($code, $message) {
  var_dump($code, $message);
});

$x= null;
var_dump($x->method());
echo "Alive\n";
```

The above produces the following output:

```
int(4096)
string(50) "Call to a member function method() on a non-object"
NULL
Alive
```

## Reasoning

If you want to run PHP as a webserver itself, fatal errors are problematic. For a long story on why you would want to do that in the first place, see http://marcjschmidt.de/blog/2014/02/08/php-high-performance.html

## Consistency

This behavior is consistent with how type hints work. Framework authors can turn this into exceptions if they wish.

## Further reading
* [RFC: Engine exceptions](https://wiki.php.net/rfc/engine_exceptions) - this PR doesn't go as far as this controversial RFC
* PHP Bugs [46601](https://bugs.php.net/bug.php?id=46601), [51882](https://bugs.php.net/bug.php?id=51882) and [51848](https://bugs.php.net/bug.php?id=51848) - bugs which would be fixed by this
* PHP Bug [54195](https://bugs.php.net/bug.php?id=54195) - related, motivates necessity
* HHVM [throws a `BadMethodCallException`](https://github.com/facebook/hhvm/blob/master/hphp/test/quick/method-non-object.php.expectf) in [these situations](https://github.com/facebook/hhvm/blob/master/hphp/test/quick/method-non-object.php) - can be done by implementing an error handler as seen [here](https://github.com/thekid/php-src/blob/51a5e184335373e0bcfd6c65fdb22c6908768a83/Zend/tests/methods-on-non-objects-throw.phpt)
I'd rephrase this condition as `while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting)` to avoid the ternary - had some trouble understanding that ^^