fix synchronized methods to lock per-instance not per-method
use functools.wraps for synchronized decorator
test/fix overloaded synchronized methods
ensure overloaded methods are registered as synchronized
print differences when testing
some changes for py3 compat