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 .
Also, I would define a free function `insert` that dispatches to `to.insert(...)`, and define the `Insertable` concept in terms of the free function. That way, containers can be adapted to model `Insertable` by defining an `insert` function that gets found by ADL.

Other things to think about: is there a `Container` concept that is then refined by `ExtensibleContainer`, like in MPL? Perhaps ExtensibleContainer is a Container that is Insertable, BackExtensible, and FrontExtensible. What is the relationship between Iterable, Range, Container, and ExtensibleContainer? What interesting container algorithms would we want to define, what container types do we want to support, (sequence? segmented? node-based? associative? unordered?) and what concepts fall out of the requirements analysis? Etc. Just food for thought. Doesn't need to be fully addressed in this pull request.