HPCC-12290 Reimplement jarray using templates

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Are the above 3 forms of compareSymbolsByName equivalent?
```
int compareSymbolsByName(IHqlExpression * left, IHqlExpression * right)
int compareSymbolsByName(IHqlExpression * * left, IHqlExpression * * right)
int compareSymbolsByName(IInterface * * pleft, IInterface * * pright)
```
do you really need all 3 variants?