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.

I don't think infinite ranges make sense as storage so I put another constraint in.