Remove const-value overload

This seemed like a nice convenience (e.g., it made possible to use the
overload for std::pair when encoding maps), but it is also problematic.
In one case it was recursing into itself, causing the stack to overflow.

Remove this overload and fix up the map-encoding dependency on it.  If
there is a better way to do this, maybe add it back later.
Add support for std::list

Using the iterator interface in the vector encode/decode logic allows it
to work on lists, too.