Extending High-Level Synthesis for Task-Parallel Programs