Subtree crossover can fail when tree size is larger than maximum tree size

Description

This is a weird corner case which normally doesn't happen in practice. However, the problem can appear for example when a run is paused and then the maximum tree length parameter is set to a lower value. In the extreme case, the new size limit can prevent all subtrees from the non-root parent from being swapped due to exceeded size limit. Furthermore, the maxInsertedBranchLength value as computed internally by the Cross method in SubtreeCrossover.cs can become negative.