Making functions subscriptable at runtime

This would also be required to type functools.wraps correctly. See functools.wraps does not work on class methods · Issue #10653 · python/typeshed · GitHub. Basically, instead of copying the whole signature – like we do for functions – for methods we’d not want to copy the self argument. This would need an overload for MethodType.