I agree with not introducing `NULLABLE_FIELD` unless we absolutely have to. Looking at the code in XBlock, we expect `KeyValueStore`s to raise a `KeyError` if the value hasn't been set (so we aren't explicitly looking for `None`). The only place that `None` means deleted/missing is in this method, I think.

If we take my above suggestion, and replace the '`null` means delete' semantics in this method, then we can get rid of `NULLABLE_FIELDS`. Instead, the client can just pass the list of fields to delete separately from the list of fields to modify, and we can call `del` in python (as the code is doing now when it sees `None`).