Minor code cleanup. Add comments explaining lack of some non-const overloads, and also iterator return type differences, compared to the standard library associative containers.
Revert handling of map updates from the update() function approach to a writeable() function approach. The update() approach was easier to implement in a dynamic length implementation, but the writeable (i.e. effectively a cast of const_iterator to iterator) is easier to explain and easier to use.
Rename "writeable" to "writable". The latter spelling is apparently preferred according to various dictionaries. Modify iterator_type to correctly handle conversion from iterator to const_iterator but not the other way around. Thanks to Boost.Iterator; where would we be without it? Add some BOOST_ASSERT_MSG's to iterator_type to detect uninitialized iterator use and dereferencing the end iterator. Add test cases accordingly.