Adds matmul heuristic for oneDNN ACL builds on AArch64
@penpornk @nSircombe @milpuz01  Hi @cfRod Can you please resolve conflicts? Thank you! @gbaned , I have rebase the PR now on top of the new commits in PR 60026. The conflicts were from PR https://github.com/tensorflow/tensorflow/pull/60026/commits which have been fixed there.  Thanks all for the last minute fight to get this in :)  @cfRod Thank you and @milpuz01 for your help too! :)
This PR follows an approach of using heuristics to choose whether to rewrite a oneDNN matmul node via mkl_layout_pass for AArch64 builds. The heuristics is based on a decision tree model with the shapes and number of ops as features. This work is based on three PRs in upstream TensorFlow:

1. https://github.com/tensorflow/tensorflow/pull/60160 that uses the rewrite pass for the convolution microbenchmarks, which has been merged.
2. https://github.com/tensorflow/tensorflow/pull/60026 that uses a heuristic based on a linear model to choose between oneDNN and Eigen.

The changes in this PR include the following:
- Use the rewrite pass for matmul microbenchmarks
- Use heuristic for matmul ops to decide when to rewrite a matmul node and is guarded for AArch64 builds

Performance impact:
With this PR, we show the performance before and after introducing this patch for 8 cores on Neoverse V1 platforms for default thread settings.
### Matmul microbenchmarks
Before the patch
![image](https://github.com/tensorflow/tensorflow/assets/65665931/6e0f033c-aeb2-490e-8f78-7b08b4d4b19e)
After the patch
![image](https://github.com/tensorflow/tensorflow/assets/65665931/a313fc01-c91c-4ca2-b7b8-5b6659c439a1)
### NLP models from hugging face
![image](https://github.com/tensorflow/tensorflow/assets/65665931/702fe640-c274-4dfe-83b0-6ef43537bf03)




