text: Title: Inconsistent behavior with dcc.Store initial values and prevent_initial_call
  Body: 
  ```
  dash                      2.16.1             
  dash-bootstrap-components 1.6.0            
  dash-core-components      2.0.0          
  dash-html-components      2.0.0                  
  dash-iconify              0.1.2               
  dash-mantine-components   0.12.1                 
  dash-table                5.0.0                   
  
  
  ```
  **description**
  There appears to be an inconsistency in how dcc.Store components behave with different initial values when using prevent_initial_call=True.
  
  **Expected behavior**
  When using `prevent_initial_call=True`, callbacks should not be triggered on initial load for any dcc.Store, regardless of initial value.
  
  **Actual behavior**
  A callback with `prevent_initial_call=True` is triggered for a dcc.Store initialized with None, but not for one initialized with an empty dictionary {}.
  
  Minimal reproducible example:
  
  ```
  import dash
  from dash import dcc, html, Input, Output, State
  
  app = dash.Dash(__name__)
  
  app.layout = html.Div([
      dcc.Store(id='store_none', data=None),
      dcc.Store(id='store', data={}),
      html.H3("none store"),
      html.Div(id='output none store', children="Not called yet"),
      html.H3("store"),
      html.Div(id='output store', children="Not called yet"),
  ])
  
  @app.callback(
      Output('output none store', 'children'),
      Input('store_none', 'data'),
      prevent_initial_call=True
  )
  def on_store_none(store_none):
      return "called"
  
  
  @app.callback(
      Output('output store', 'children'),
      Input("store", "data"),
      prevent_initial_call=True
  )
  def on_store(store):
      return "called"
  
  
  if __name__ == '__main__':
      app.run_server(debug=True)
  
  ```
  
  
  **Screenshots**
  
  ![image](https://github.com/plotly/dash/assets/119524982/54275299-006c-473d-a42e-f853b3a3b54e)