PAL: A Language for Parallel Asynchronous Computation