Associate `TaskScheduler` instance to `WebAppContext`, fixes #851
- problem
    - `TaskScheduler.cancelAll` called when servlet/portlet is destroyed
    - might never happen if not started
    - but `TaskScheduler` might have been created on context initialization
- solution
    - associate `TaskScheduler` instance to `WebAppContext`
    - on `WebAppContext` destruction, call `cancelAll()` on `TaskScheduler`
    - instead of doing it on servlet/portlet destruction
- also
    - remove unused `TestTask.java`, with old test code in `main()`
- todo
    - for portlets, is the `WebAppContext` destroyed?
    - looks like `WebAppContext.webAppDestroyed` is only called from `OrbeonServletContextListener`
New Ant tasks to start/stop Tomcat