insert/push_back/push_front range extension

Add range-based non-member non-friend insert extension, push_back/push_front utilities that build upon it, and RANGE_RETURNS utility macro.

Closes #4 .
> Providing a single function that does the right thing (append a value, or a range) depending on the argument results in an easier API.

This is also a sensible argument. Following that reasoning, however, gives us a `std::string` with *both* a `push_back` and an `append` that do the same thing. :-/ Regardless, I don't think we're going to have the last word on the subject. This is really for the committee to decide.

I haven't had time to dig into your suggestions for the container concepts. Although I wonder why you think that these should be defined for Iterable instead of a new Container concept. I'm not sure what `push_back` means for, say, an pair of iterators. Is it like `view::join`? That has very different semantics, performance characteristics, and requirements. I don't think we want that.