Tweaks and bug fixes for Revit Scheduler

Background
-----
This pull request finishes Revit-specific scheduler implementation. It picks up where [the previous pull request](https://github.com/DynamoDS/Dynamo/pull/2477) left off, fixes some issues discovered while testing Revit with scheduler enabled.

Changes
-----
Some important changes:
1. ```UpdateGraphAsyncTask``` asynchronous task now removes warning messages from nodes that involved in the update, the warnings (if any) will be repopulated when the task is finishes. This way warning messages are cleared just as the old ```EngineController.ClearWarnings``` did.

2. ```ClearPromises```, ```RegisterIdle```, ```ExecuteOnShutdown``` and ```Shutdown``` methods on ```IdlePromise``` stub class have now been removed (the new shutdown logic no longer require them since shut down logic is handled beyond ```DynamoScheduler```, which is destroyed at that time).

Notes to reviewers
-----
Hi somebody, please take a look. Those inline notes should help understanding the changes better, thanks!

Instead of calling ```IdlePromise.ExecuteOnShutdown``` to execute ```DeleteKeeperElement```, we register an event handler ```DeleteKeeperElementOnce``` so that it gets called the next time Revit goes into idle state. See ```DeleteKeeperElementOnce``` below for details.