Preserve original file's indentation.

For easier copy/paste from original file.
Copy ExternalMethod.__call__ entirely to prepare for further patching.

Also, use from ... import * to make verbatim original code work.
Also, use original code's coding style for unaltered lines.
Add a warning about possibly incorrect code.
Add a TODO for python2.7-only feature.
Fix magic "self" parameter detection.

Original code behaviour:
>>> def foo(self, a=None):
...    return 'works'
...
>>> context.foo(a=1)
works
>>> def foo(self, a):
...   return 'works'
...
>>> context.foo(1)
works
>>> context.foo(a=1)
TypeError: foo() takes exactly 2 non-keyword arguments (0 given)

Also, original code was doing expensive checks before cheap ones.