Easier Parallel Programming with Provably-Efficient Runtime Schedulers