mark most of std.algorithm's unit tests as @safe

In a few cases, minor changes were required, but the vast majority are simply adding @safe to the unittest block.

Unless I missed one, every remaining non-@safe unittest is due to some aspect failing, either the test itself or the code under test.  Examples include:
- use of Array
- use of heap
- use of object.opEquals
- use of pointers
- use of casts

$ grep unittest std/algorithm.d  | grep -v safe | grep -v writeln | wc -l
58
$ grep unittest std/algorithm.d  | grep safe | grep -v writeln | wc -l   
233

Note: builds on top of pull 2609