Add map with location

TODO
- [x] implement map_with_location
- [x] add parakeet compilation and Map fusion tests
- [x] reimplement arange
- [x] reimplement normalize
- [x] reimplement sparse_diagonal
- [x] reimplement region_map
- [x] reimplement scan
- [x] fix optimization bug
all of this can be changed as:
combined_op = expr.op.__class__(fn=expr.op.fn, kw=expr.op.kw, pretty_fn=expr.op.pretty_fn)