Updated Executor to support custom instantiation and a single executor pool.
Updated IO.copy(File, File) and IO.copy(String, File) to return the output File.
Created Task and TaskManager to manage asynchronous work that feeds status updates back to the caller.