[5.0] Allow DI In Static Methods

This allows you to do

```php
class Classname {
    public static function staticMethod(Foo $foo, Bar $bar)
    {
        //
    }
}

function global_function(Baz $baz)
{
    //
}

namespace Vendor {
    function local_function(Qux $qux)
    {
        //
    }
}

$container->call('Classname::staticMethod');
$container->call('global_function');
$container->call('Vendor\local_function');
```

Which wasn't possible before because `new \ReflectionFunction($arg)` doesn't accept this kind of string, because the string describes a Method and not a Function.

Also note the `callable` Type Hint, which is available since PHP 5.4 ([first line](http://php.net/manual/en/language.types.callable.php)), and accepts everything like:

- `'Classname::staticMethod'`,
- `'\Vendor\function_name'`,
- `'global_function_name'`,
- `[$object, 'methodName']`,
- `function () {}`

Basically anything that responds `is_callable` accepts and is a possible first argument for `call_user_func` and `call_user_func_array`.
With such a name, a boolean is indeed expected.

What bothered me was the `strpos($callback, '@') !== false || $defaultMethod`
I thought it could return the variable as is instead of using it to produce a boolean via the `||`. I’ve probably done too much JavaScript recently.