allow blank key or values

This was originally intended to handle client-side deleted data, but
was the incorrect solution. It's the right and responsibility of the
app to control that, not have data mysteriously disappear.