Add support for map construction from key/value arrays

Fixes #1830 with a map constructor that is a scalar function ```MAP(array<K>, array<V>) -> map``` and accepts an array of keys and an array of values.

```
presto:default> select MAP(ARRAY['key_1','key_2'], ARRAY['val_1', 'val_2']);
           _col0
----------------------------
 {key_2=val_2, key_1=val_1}
(1 row)
```
use Throwables.propagate instead of returning null