Add API to convert variable to constant in Keras saved model to improve inference performance
@retonym,
Usually Keras SavedModel uses [tf.saved_model.save](https://www.tensorflow.org/api_docs/python/tf/saved_model/save) to save the model and all trackable objects attached to the model (e.g. layers and variables). The model config, weights, and optimizer are saved in the SavedModel. Additionally, for every Keras layer attached to the model, the SavedModel stores:

- the config and metadata -- e.g. name, dtype, trainable status
- traced call and loss functions, which are stored as TensorFlow subgraphs.

The traced functions allow the SavedModel format to save and load custom layers without the original class definition.
Also tf.keras.initializers.Constant is the Initializer that generates tensors with constant values and please take a look at this issue for the [reference](https://stackoverflow.com/questions/63630875/change-keras-model-variable). Thank you! This issue was closed because it has been inactive for 7 days since being marked as stale. Please reopen if you'd like to work on this further. Are you satisfied with the resolution of your issue?
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=Yes&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/59736">Yes</a>
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=No&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/59736">No</a>

<details><summary>Click to expand!</summary> 
 
 ### Issue Type

Performance

### Have you reproduced the bug with TF nightly?

Yes

### Source

binary

### Tensorflow Version

tf 2.11

### Custom Code

No

### OS Platform and Distribution

_No response_

### Mobile device

_No response_

### Python version

_No response_

### Bazel version

_No response_

### GCC/Compiler version

_No response_

### CUDA/cuDNN version

_No response_

### GPU model and memory

_No response_

### Current Behaviour?


Keras save_model keeps variable status instead of const. It will block some inference opportunities, such as Conv + Batchnormalization folding.

We expect Keras save format can provide similar APIs like [convert_variables_to_constants](https://www.tensorflow.org/api_docs/python/tf/compat/v1/graph_util/convert_variables_to_constants) in TF1 pb format.

With variables replaced by constant in inference, more optimization can be done.



### Standalone code to reproduce the issue

```shell
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# tf.keras.utils.set_random_seed(34)
np.random.seed(34)
tf.random.set_seed(34)

training_data = np.random.normal(0, 1, size=(32, 5, 5, 3)).astype("float32")
test_data = np.random.normal(0, 1, size=(16, 5, 5, 3)).astype("float32")
label_data = np.random.normal(0, 1, size=(32, 5, 5, 3)).astype("float32")

model = tf.keras.models.Sequential()
model.add(tf.keras.Input(shape=(5, 5, 3)))
model.add(tf.keras.layers.Conv2D(filters=3, kernel_size=3, strides=(1, 1), padding="same", data_format="channels_last"))
model.add(tf.keras.layers.BatchNormalization())

model.summary()

# Compile the model
model.compile(optimizer=keras.optimizers.Adam(1e-3), loss=tf.keras.losses.MeanSquaredError())

# Train the model for 1 epoch from Numpy data
batch_size = 1
print("Fit on NumPy data")
history = model.fit(training_data, label_data, batch_size=batch_size, epochs=3)

print(history.history)

predictions = model.predict(training_data, batch_size=2)
print(predictions)
print(predictions.shape)
```


### Relevant log output

```shell
We expect the Batchnormalization op is folded in above code.
```
</details>