Mark std.range.cycle for static array and their unittests as system
Extend groupBy to handle non-equivalence relations.

Update DDocs.

Add unittest for 13595.
Use flag enum instead of bool.

To prevent Boolean Blindness.
Do reflexivity check in assert mode if predicate is claimed to be equivalence relation.
Use Flag instead of single-use enum.
Rename IsEquivRelation to EquivRelation.
Use version-specific navbar when building docs.
Use -prerelease for navbar ddoc instead of hardcoded version.
Merge pull request #2654 from quickfur/issue13595b

Issue 13595: Extend groupBy to handle non-equivalence relations.
add upgrade hints
Merge pull request #2777 from WalterBright/upgrade

add upgrade hints
Merge pull request #2769 from tom-tan/system-range-cycle-for-sarray

Mark std.range.cycle for static array and their unittests as system
Merge pull request #2774 from quickfur/versioned_navbar

Use version-specific navbar when building docs.
First failing try
Yet another try
More isMutable guards
Apply fix: make Array.Range a type again
use the proper element type instead of T

T misses A's qualifiers which are needed. E has them. This means,
const/immutable are taken over from A automatically. This allows inout
to be used on front/back/opIndex. inout doesn't work for opSlice, but the
isMutable!A guard can be dropped.

move*, opSliceAssign, etc would be strictly fine with T, but to avoid
confusion I think it's better to not use T in Range at all.
Add reference to Issue 13629
Remove template argument from return of RangeT.opSlice