Random cleanup/refactoring with the interrupting input functionality. Also added PauseToken that is to be used instead of the Stop method for pausing the background ZoneProgram when an interrupting program interrupts. Taken from http://blogs.msdn.com/b/pfxteam/archive/2013/01/13/cooperatively-pausing-async-methods.aspx