The before and after operations on subranges can now return different types than the original
ranges they are invoked with. This allows switching to a different implementation. The types
returned by these operations can be retreived from range traits.

Also, added a backward single iterator range. The before and after operations are
implemented differently than for the forward single iterator range.

Signed-off-by: Marcin Zalewski <marcin.zalewski@gmail.com>
all_of tests.

Signed-off-by: Marcin Zalewski <marcin.zalewski@gmail.com>
Added some notes.

Signed-off-by: Marcin Zalewski <marcin.zalewski@gmail.com>
Added the ranges include file.

Signed-off-by: Marcin Zalewski <marcin.zalewski@gmail.com>