[oneDNN] Enable Caching Scaled Bias in QuantizedMatmul in oneDNN 3.x
Thank you for reviewing the PR, I have addressed your comments. For the code refactoring, yes, we will create a separate PR after this is merged. (Just for future reference)
All 3 failures seem unrelated.

[AMD ROCm](http://ml-ci.amd.com:21096/blue/organizations/jenkins/tensorflow%2Fgithub-prs-upstream-master%2FAMD-ROCm-Community-CI-Build/detail/PR-61277/2/pipeline):
```
ERROR: /home/jenkins/workspace/ROCm-Community-CI-Build_PR-61277/bazel-ci_build-cache/.cache/bazel/_bazel_jenkins/eab0d61a99b6696edb3d2aff87b585e8/external/local_config_rocm/rocm/build_defs.bzl:52:21: syntax error at '%': expected expression
```

[Android Demo App](https://source.cloud.google.com/results/invocations/59ef3d64-af14-40b4-ac96-61b9a252fe6f/log):
```
__main__.UserInputError: Invalid CLANG_COMPILER_PATH setting was provided 10 times in a row. Assuming to be a scripting mistake.
```

[MacOS CPU Python3.9](https://source.cloud.google.com/results/invocations/5b0792f6-6cb7-4c69-b182-9b098a96fda6/log):
```
...
[libprotobuf ERROR external/com_google_protobuf/src/google/protobuf/descriptor_database.cc:642] File already exists in database: tensorflow/compiler/xla/service/hlo.proto
[libprotobuf FATAL external/com_google_protobuf/src/google/protobuf/descriptor.cc:1986] CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
libc++abi: terminating with uncaught exception of type google::protobuf::FatalException: CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
...
==================== Test output for //tensorflow/python/data/experimental/kernel_tests:tf_record_writer_test:
[libprotobuf ERROR external/com_google_protobuf/src/google/protobuf/descriptor_database.cc:642] File already exists in database: tensorflow/compiler/xla/service/hlo.proto
[libprotobuf FATAL external/com_google_protobuf/src/google/protobuf/descriptor.cc:1986] CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
libc++abi: terminating with uncaught exception of type google::protobuf::FatalException: CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
================================================================================
==================== Test output for //tensorflow/python/data/experimental/kernel_tests:tf_record_writer_test:
[libprotobuf ERROR external/com_google_protobuf/src/google/protobuf/descriptor_database.cc:642] File already exists in database: tensorflow/compiler/xla/service/hlo.proto
[libprotobuf FATAL external/com_google_protobuf/src/google/protobuf/descriptor.cc:1986] CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
libc++abi: terminating with uncaught exception of type google::protobuf::FatalException: CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
================================================================================
...
```
- oneDNN v3.x requires Bias to be passed as float in QuantizedMatMul. There are some models that have Bias as QINT32. So we convert that Bias to float with proper scaling. This PR caches the scaled bias in the first iteration to avoid doing that conversion in subsequent iterations.

- This PR also enables weight caching for MatMul op with oneDNN v3.x.

- This PR does not change common (non-oneDNN) TF code.