[Android NNAPI EP] Add support for dynamic output (#4650)
* add dynamic output shape support
* fix bugs associates with scalar inputs
* addressed comments, fixed issue the output buffer size is not correctly set, refactor shaper class
* split the execution logic from nnapi::Model into nnapi::Execution
* update comments for certain scenarios, 1. dynamic output buffer size, 2. ONNX scalar input
* move ctor of nnapi::Execution to public