Change async process key generating algorithm to not reuse keys.

Other minor name and documentation changes.
Remove no-longer-used private class.
Remove unused variable.
Add cancel methods to the AsyncTaskHandle.

Still not sure about this duplication of cancel methods, but lets see how it goes.
Refactor methods.