runtime: avoid assumption that all objects provide __call__
Objects which are backed by native extensions do not provide
a __call__ attribute, but are none the less callable if the
native extension provides a 'tp_call' implementation.
The jinja2.runtime.Context.call method unconditionally
access the '__call__' attribute causing an exception to be
raised if the object was a native extension method.
A demo of the problem can be seen using PyGObject:
$ cat demo.py
#!/usr/bin/python
from gi.repository import Gio
from jinja2 import Environment
f = Gio.File.new_for_path("/some/file.txt")
print f.get_uri()
t = Environment().from_string("""{{f.get_uri()}}""")
print t.render(f=f)
Which when run results in
$ ./demo.py
file:///some/file.txt
Traceback (most recent call last):
File "./demo.py", line 10, in <module>
print t.render(f=f)
File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 969, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 742, in handle_exception
reraise(exc_type, exc_value, tb)
File "<template>", line 1, in top-level template code
AttributeError: 'gi.FunctionInfo' object has no attribute '__call__'