Fixed missing ostream inserters in video-inserters.hpp.
Base video event now properly derives from event::event_c.
Fixed clang builds.
Casts no longer slice.
Forwarded a few static_casts to scasts.
Added operators ++,-- to ref_count_c.
Small typo fix.
Fixed segfault when inserting an empty string_ref_c into an ostream.
Range updates.

- Lots of general cleanup, like making names consistent, using mp_(begin|end)
and begin(<range>)/end(<range>) rather than .(begin|end)().
- Added "mutable" begin/end.
- Added make_range variants.
- Added range(), which works like std::begin/end, but returns a container's
begin/end as a range, if so defined. I'm pretty sure it can be implemented in
terms of std::begin/end, and ranges can already be make_range from containers.
I'm not sure what the best approach is yet, but we can keep all 3 and let it
shake out later.
Added init mech and unit test.