Dataflow Models of Computation for Programming Heterogeneous Multicores