Check for null pointer in DowncastingPolicies.

The return is now just the PyNone object.
Refs #8996
Fix passing weak_ptrs back to C++ from Python layer.

Refs #8996
Rename RegisterDataItemInterface to DataItemInterface.

Refs #8996