def delete_node(node, key)
      case get_node_type(node)
      when :blank
        BLANK_NODE
      when :branch
        delete_branch_node(node, key)
      else # kv type
        delete_kv_node(node, key)
      end
    end
def delete_node(node, key)
      case get_node_type(node)
      when :blank
        BLANK_NODE
      when :branch
        delete_branch_node(node, key)
      else # kv type
        delete_kv_node(node, key)
      end
    end
Delete item inside node.

 If this node is changed to a new node, it's parent will take the
 responsibility to **store** the new node storage, and delete the old node
 storage.

 @param node [Array, BLANK_NODE] node in form of array, or BLANK_NODE
 @param key [Array] nibble key without terminator. key maybe empty

 @return new node