Use decreasing an atomic counter in callback function to repleace loop, it will improve the performance of WhenAll
1. Fix a issue that doesn't set cancelled status when directly call Cancel() function.
2. Rename canceller.SetCancelled() to Cancel()
3. Remove IsCancellationRequested() and SetCancelled() from Future struct
Remove used code
re-format code
Split codes to four source code files