Broaden $function to accept any callable, not just closures.

Only accepting closures is annoying when you have a function that
already exists.

For example,
```php
function getData()
{
    // ...
    return $results;
}
```

This can now be cached by passing the string 'getData' as the function
rather than having to wrap the function in a closure.  Similarly, if
that function was defined on an object you could now pass array($object,
'getData').

The type hint is PHP 5.4 or newer, hence the composer.json change.