FixedArray & Sorted

This implements two different wrapper structs.

Sorted is designed as a wrapper around a random access range or a container that guarantees  that all elements are stored in sorted order. It should offer all possible container primitives, especially  those that require log(n) search, like lowerBound, upperBound and equalRange.

FixedArray takes a random access range and offers an interface similar to std.container.Array using this range as storage. This is used by std.container.Sorted and could be used by std.container.BinaryHeap as well.

Neither FixedArray nor Sorted use RefCounted to keep track of it's storage, see and answer
http://forum.dlang.org/thread/uapqmdbtadpwnciwfdwn@forum.dlang.org
if you don't agree.

Only use inout parameters when inout is also part of the return type (or an out parameter), otherwise use const. I wouldn't be surprised if code like this failed to compile in the future as it really makes no sense.