Create a specialized path for execution plan with a simple body.

This CL creates a specialized and simplified execution path for
execution plan with a SIMPLE body, i.e. the whole model is executed on a
single device.

Having this simplified path can avoid some runtime overheads that only
apply for a COMPOUND execution plan, including:
- ExecutionPlan::makeController/next
- StepExecutor::updateOutputShapes

It also simplifies the subsequent CLs to apply optmizations specific to
SIMPLE execution plans.

Additionally, this CL removes the use of ExecutionCallback in the sync
execution path.

Bug: 184073769
Test: NNT_static
Change-Id: If57bd9b9ea7f01e6e489d0b7977ab040691b2397
5 files changed