Flesh out reduction support for half data types.

Also extended test cases for more thorough data type coverage
(including non-half data types).

- Bug fixes.
- Result type can be vector of half or array of vector of half.
- Full reflection support for [array of] [vector of] half input or result.

Bug: 27299169
Change-Id: Id674ae2ea2cce6215f152fd62bb5b124c44cfcd3
(cherry picked from commit 2d7f3f95947889e1ea48b0e925c5929af4fbf6b4)
20 files changed