[buffer] Remove harmful asserts (prevents writing 0)
[buffer] Fix broken string write/read design.

By default use VLA encoding for strings (uint8 type) + (size) + string.
But allow the old way of reading and writing strings as well when type is known
ahead. (maximum string sizes, many file formats do this)