Modified Levenshtein distance()

Modified the implementation of Levenshtein distance so that it now uses O(n) memory but retains the same time complexity. However, does not work with path().
Modified Levenshtein distance()

Modified the implementation of Levenshtein distance so that it now uses O(n) memory but retains the same time complexity. However, does not work with path().
Fixed formatting

Moved all braces so that they are on their own lines and removed the trailing whitespace after function declaration;
Moved previous distance() implementation

Moved to be a private method and only expose new more memory efficient
distance(). This is done because we need the old implementation for
path(). Modified levenshteinDistanceAndPath() to use the old distance()
to reflect this.
Refactored, added unit tests and removed opIndex.

Moved checks for which Range is longer to levenshteinDistance() method.

Reverted to implementation found in original distance() with regards to
using front/popFront instead of opIndex.

Fixed formatting of return statement.

Added two unit tests for levenshteinDistance().

Credit to @Poita.
Refactored distance() and corrected path()

Refactored distacen() so that it now accepts the lengths of the ranges
because we already calculate these in levenshteinDistance().

Altered ss in distance() and tt in distanceWithPath().

Moved popFront()’s to after their final usage to handle transitive
ranges.

Corrected path() so that it calls distanceWithPath() instead of
distance().
Removed calls to matrix() in distance()

Since _matrix is now a single dimension matrix, calls to matrix() have
been removed and replaced with direct access equivalents.
Changed the implementation of distance() so that it uses the memory inefficient version to prevent breakage in the API. Efficient version has been moved to distanceLowMem() in the struct and is called internally by levenshteinDistance()
Removed the accidental semicolon
Deprecate std.c.string and move its contents to druntime
Merge branch 'master' into std-range-tee-fixup

Conflicts:
	std/range.d
Add documented unittests, fix small nits
Small change to documented unittest
std.container.array.Array.stableLinearRemove aliases to wrong symbol

Removed the alias entirely because Array.linearRemove is not actually stable anyway
Add explanation for overload of tee that can take a template lambda or a function.
Merge pull request #2147 from yglukhov/issue10194

Issue 10194. Variant does not call struct destructors.
Indent parameters
Merge pull request #2077 from ntrel/byLineCopy

Fix Issue 12556 - Add persistent stdio.File.byLine
Merge pull request #2329 from JakobOvrum/array_remove

std.container.array.Array.stableLinearRemove aliases to wrong symbol
Merge pull request #2178 from monarchdodra/appenderStaticArray

Sanitize Appender constraints a bit.