Implement chunkBy.
Use new lambda syntax instead of string lambdas in unittests
Use a!=b instead of !(a==b).

D consistently uses opEquals/opCmp for == and !=, so no need to fear
some user-defined types support == but not !=.
Move unittest-specific code into unittest block.

To avoid causing conflicts in user code.
Refactor implementation.
Verify that chunkBy is usable with pure @safe nothrow
These asserts are really in-contracts, not internal logic.