Removed limitation where we can only move branches inside the same scope.

It's now possible to move branches over different scopes.

Added `setNegativeScope` to the peer class, which moves the branch so we have negative left/right values.
`isDescendantOf` returns now `false` if the parameter is in a different scope instead of throwing an exception.
In `moveSubtreeTo` we detect now whether the scope is different or not and use then (if different) the `setNegativeScope` and own `shiftRLValues` calls to move the branch  to the correct place.

Adjusted the tests `testMoveToLastChildOf`, `testMoveToFirstChildOf`, `testMoveToPrevSiblingOf` and `testMoveToNextSiblingOf` so it tests more cases, especially the new feature.