refactor cudaEvent usage

- add `CudaEvent` which is a wrapper for cudaEvent_t
- solve problem that `cudaStreamWaitEvent` was called to often
- EventStream: add function `waitOn()`
change github anotations

- fix documentation typos
- change interface from copy by value to const reference where CUDAEvent is used as input parameter
Merge pull request #536 from psychocoderHPC/topic-cudaEvents

refactor cudaEvent usage