Fix crashes in event dispatch other related safety checks/fixes

1: Add a fix to prevent events from being sent to scene nodes which are destroyed. Previously when a node was being destroyed it would try to unregister any event listeners it would have. This process would fail however in the case where event dispatching was already underway because we can't modify the listeners list while we are iterating through it. This is a pretty common occurrence since we often tear down & switch scenes in response to button clicks etc. Fix the problem by nulling out the slot for the listener we are removing in this case, so that it's node no longer receives any events after it is destroyed. The event dispatching code will cleanup this unused/nulled slot once the event processing loop has terminated.

2: When removing an event listener in cocos2d::EventDispatcher, ensure immediately it gets removed from the node priority map and dirty nodes set in order to ensure we don't inadvertently access any dangling pointers to nodes.

3: Add debug checks to ensure nodes have no associated event listeners after they are destroyed. This check will catch the problem fixed by (1) if it is still present.

4: Add some extra debug sanity checks in the event dispatcher to ensure nodes are not added to the lists twice and that they are being properly removed from the lists under certain conditions.

5: In cocos2d::Node's destructor NULL out members after releasing them in case they somehow happen to be accessed during the destructor. Move the release of the event dispatcher to the very end, since we need to check against it in debug.
Review feedback: fix memory leak discovered.
Always safe release the listener we retain - shift where release happens to the end of the block. Reproduced the leak using the Xcode Leaks instrument in the RemoveListenerAfterAddingTest and verified fixed after apply this change.
Review feedback: Remove unnecessary check of EventListener::getSceneGraphPriority() for fixed event listeners.
Fixed priority event listeners never have an associated node.
Review feedback: Wrap the debug verification in additional macros which are disabled by default.
Require the user to enable 'CC_NODE_DEBUG_VERIFY_EVENT_LISTENERS' in ccConfig.h in order to enable the debug checks in debug builds.
Revert "Review feedback: fix memory leak discovered."

This reverts commit 7c10e52b9fba551f8ade7829b662bdd86817e604.
Undo most of the rest of the event dispatcher related changes in this fix. Will update with a much more elegant solution that does not disturb the existing code so much and which ensures no dangling pointers.
When an event listener is removed from the scene and has a node associated with it, NULL out the node pointer so as not to leave any dangling pointers.
Macro wrap some of the other debug checks related to event listeners.
Add a test for events being sent to destroyed nodes.
Fix the new test added to the event dispatcher tests
Update the test for dangling node pointers in the events system.
Should be run when the debug event listener verification for nodes is switched on.
Find another instance where we should null out the node pointer for the current listener after it has been disassociated with the node.
Merge pull request #6011 from DarraghCoy/event_listener_crash_fixes

closed #4586: Fix crashes in event dispatch other related safety checks/fixes