[Executor] Avoid unnecessary calls to `InlinedVector::clear()` and `resize()`.
[Executor] Avoid unnecessary calls to `InlinedVector::clear()` and `resize()`.

This change should benefit execution for graphs with large runs of inexpensive kernels, or where execution is dispatched by a single thread.

The executor temporarily stores the outputs of an op in an `EntryVector`. `ExecutorState::ProcessOutputs()` resizes the vector to `item.num_outputs` elements before filling in the entries retrieved from the `OpKernelContext`. `ExecutorState::Process()` then clears the vector after calling `PropagateOutputs()`.

This change makes two edits to avoid calls to `resize()` and `clear()`:

1. We no longer clear the `EntryVector` between operations. Instead, we call `Entry::ClearVal()` on all of the elements that were touched by the last operation, which releases any leftover tensor references.

2. We no longer resize the `EntryVector` to `item.num_outputs` in `ProcessOutputs()`. Instead, we resize it to the maximum of the current size and `item.num_outputs`. This avoids a deallocation/reallocation when the entries cannot be stored inline.

This change also modifies the type of `outputs` passed to `ProcessOutputs()` from `EntryVector*` to a C-style `Entry*` array, to provide more efficient access (one fewer branch) to the individual elements.

PiperOrigin-RevId: 307085587
Change-Id: I0cda746b8e07e4f3f57aab3282df6b38b5653f88

gunan/tensorflow,gunan/tensorflow,gunan/tensorflow,gunan/tensorflow,gunan/tensorflow,gunan/tensorflow,gunan/tensorflow,gunan/tensorflow,gunan/tensorflow,gunan/tensorflow,gunan/tensorflow,gunan/tensorflow