Change DetailsI to store client as raw pointer to prevent circular reference

This fixes a circular reference between client and details, which was causing the client to never be freed unless closeSession was called, which would free the Ice objects, and break the reference. The client controls destruction of details via closeSession, so there is no worry of a dangling pointer issue.
Don't close the callback in the destructor to prevent double deletion. Fixes #10417

The ServantManager already removes/deletes the callback, so we cannot call remove/close in the destructor as it's already in the process of happening.
Added a new close method, in the event you do want to close the callback before the session is closed.
Add poll param to DeleteCallbackI to match ProcessCallbackI
Change process and delete callbacks to also handle close in a separate function and not the destructor

This prevents the same potential double delete issue as was seen with CmdCallback
Remove client::__del__ as it shouldn't be accessible to outside code and the name is a bit confusing
Don't manually delete clients now that it happens automatically
Forgot to change this client_ptr to raw pointer with previous cycle reference fix
Add __del__ back to keep the API the same as java/python
Move closeHandle param back to ctor as it's easier to specify upfront
Better log message for ignored exception
Add Wrapper class for callback objects to make sure they are properly closed when no longer needed
Make callbacks work across a firewall. see #2485

The object adapter needed to be created with the router, as it's done in Python
Merge pull request #792 from JesseCorrington/clientFixes

C++ Client fixes