Clean up differences between print() and repr_print()

To see the problem, try following commands in interactive prompt on x64:

~~~~
>>> class A: pass
... 
>>> A()
<A object at 0x7fc3b7925f00>
>>> print(A())
<A object at ffffffffb7926000>
~~~~

As can be seen, 1) using print() truncates %p format spec value to 32 bit. Fixing that, there's still discrepancy in that ``__repr_print__`` prints value with "0x" prefix, while print() - without. That's because former uses libc implementation of printf(), while the latter - our own. I was reluctant changing that, but figuring out that in CPython, overriding sys.stdout makes implicit interactive prints go to it, it's clear that ``__repr_print__`` should behave like ``print``.

That's still only partially resolve issue still, as:

~~~~
print(str(A()))
~~~~

still uses system routines (and has "0x" prefix), so more refactoring is needed to achieve consistency.