Fix spying on unbound methods defined in a parent class of an owner.
Review Request #10343 — Created Dec. 3, 2018 and submitted
When spying on bound methods that were really defined on a parent of an
owning class, we cloned the method so that the underlying bytecode
wouldn't be shared between the spied method and other subclasses of the
parent. The same needs to be done for unbound methods as well.
This updates our cloning logic to properly clone unbound methods,
keeping the state separate. This works on all supported versions of
Unit tests pass on all supported Python versions.
Tested against broken behavior in tests being written in Review Board.