Removes a node with a given index.
An event is generated toward the listeners. Note that removing a node may remove all edges it is connected to. In this case corresponding events will also be generated toward the listeners.
This method is implicitly generic and return something which extends Node. The return type is the one of the left part of the assignment. For example, in the following call :
ExtendedNode n = graph.removeNode(index);
the method will return an ExtendedNode. If no left part exists, method will just return a Node.
@param index The index of the node to be removed
@return The removed node
@throws IndexOutOfBoundsException if the index is negative or greater than {@code getNodeCount() - 1}.