Tarragon : A Programming Model For Latency-Hiding Scientific Computations