Implement wait_group_events builtin v2

This is a simple default implemetation which just calls barrier().

v2:
  - Only call barrier() once.

git-svn-id: https://llvm.org/svn/llvm-project/libclc/trunk@219006 91177308-0d34-0410-b5e6-96231b3b80d8
Implement async_work_group_strided_copy builtin v2

This is a simple implementation which just copies data synchronously.

v2:
  - Use size_t.

git-svn-id: https://llvm.org/svn/llvm-project/libclc/trunk@219007 91177308-0d34-0410-b5e6-96231b3b80d8
Implement async_work_group_copy builtin v3

This is a simple implementation which just copies data synchronously.

v2:
  - Use size_t.

v3:
  - Fix possible race condition by splitting the copy among multiple
    work items.

git-svn-id: https://llvm.org/svn/llvm-project/libclc/trunk@219008 91177308-0d34-0410-b5e6-96231b3b80d8