Enhancement request 13022: add `std.complex.sqAbs`

Add `std.complex.abs2`, which returns the squared modulus of a
`Complex` or real number.

Rationale:
* It is common to need the squared modulus of a complex number,
and using `abs(z)*abs(z)` would be inefficient due to the
computation of the square root.
* The name `abs2` has been chosen for consistency with `abs`, and
for being mathematically more correct than `norm`, used by C++ STL
for the equivalent function.
* For genericity, the function `abs2` is also declared for real
floating point numbers, in which case it simply returns its
square.

UPDATE: use `sqAbs` instead of `abs2`.
Document std.range.transposed (issue 4330).

Add unittested example as well.
Fix issue 8764

Transposed can only work with ranges of ranges if the subranges are
assignable. Add signature constraints.

Fix forward range bugs (should use .save instead of just copying the
range object).

Add unittests.
Move docs from struct Transposed to transpose().
Don't use fprintf to output D strings since they might contain embedded nulls.

Instead, use fwrite to output the string in its entirety. It's probably
more efficient this way anyway, since we bypass format string parsing in
fprintf.
Update unittest to check for correct writing of embedded nulls.
Fixed handling of a struct with no "length" field defined but with opDispatch of inappropriate type.
some love for std.string

many functions of std.string had no attributes like pure, safe etc.
additionally, many const arguments where not marked as const.
tabs -> whitespace
removed tail whitespace
Doc Examples to unittest docs

more love for std.string

const to in

squeeze
prevent ambiguity when calling take with a Take!R

If Take!R satisfied ```isInputRange!(Unqual!R) && !isInfinite!(Unqual!R) && hasSlicing!(Unqual!R)``` then you would get an ambiguity error calling take!(Take!R)
fix unittest
actually fix the unittest...
Add clamp function

Request in issue 10039

http://d.puremagic.com/issues/show_bug.cgi?id=10039
Adjust clamp signature and tests

signed is now deduced over unsigned, added small documented unittest
instead of full block
Add in contract for clamp()

lower bound should not be larger than higher one
Mention 'clamp' in the cheatsheet
Merge pull request #2340 from John-Colvin/patch-9

prevent ambiguity when calling take with a Take!R
Merge pull request #2062 from yglukhov/patch-1

Fix Variant to support structs with "length" field of inappropriate type
Merge pull request #1138 from quickfur/transposed

Fix issue 4330 and issue 8764
Merge pull request #2323 from burner/std_string_attributes

some love for std.string
Merge pull request #2334 from quickfur/issue8730

std.stdio.writeln should write strings with embedded nulls correctly