Replaced intrusive pointer with raw pointer in RefCounted isSame().

Intrusive pointers come at a cost, and there's no need to use them here.
Added RefCounted equality and inequality bindings.

Prior to this we were relying on the built in Python defaults, which compared equal only between the exact same python objects. Since we can't guarantee that a single RefCounted object is always represented by only one Python object, this default doesn't always give us the right answer. This has always been a problem for non-wrapped objects, but is now a problem even for wrapped classes if they use the new style wrappers and haven't been subclassed in Python. Ideally in the future we'll fix the object identity problem once and for all, for both wrapped and non-wrapped objects, but for now this is a good improvement.
Added RefCounted __hash__ binding.

The default hash is based on the address of the Python object, basing it on the address of the underlying C++ object prevents issues caused by two python objects referencing the same underlying RefCounted object.