fix for move_to_child_with_index method

when moving a node downward (but not to the bottom) within its current parent the
`move_to_child_with_index` method would insert the node in the wrong place.

This is because when moving a node downward the positioning needs to take into account the fact
that the moving node is being removed from its current position.

also, add code to handle a no-op call -- moving a node to the position it's already at -- w/o raising an error.