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 primitives that std.container.Array does plus 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 am not sure about this. To allow mutation via the container directly and disallow it via ranges, could be a some kind of compromise. Maybe it is not worth it and I should revert to everything mutable.