DO NOT MERGE: Work in progress

# Background
This pull request is meant to standardize the way ```DynamoModel``` is shutdown (more specifically, ```RevitDynamoModel```).

# Changes
### Existing shutdown behavior
##### Shutdown sequence 1 (an ideal scenario):

    1. DynamoView.WindowClosing > RevitDynamoModel.ShutDown
    2. RevitDynamoModel.ShutDown > IdlePromise.ExecuteOnShutdown
    3. RevitDynamoModel.ShutDown > DynamoModel.ShutDown
    4. DynamoModel.ShutDown
    5. RevitDynamoModel.ShutDown > IdlePromise.ExecuteOnIdleAsync (PostableCommand.ExitRevit)
    6. DynamoRevit.DynamoView_Closing > IdlePromise.ClearPromises 
    7. DynamoRevit.DynamoView_Closing > IdlePromise.Shutdown
    8. DynamoRevit.DynamoView_Closed
    9. Shutdown delegate (from Step #2 above)

##### Shutdown sequence 2 (incorrect scenario):

    1. DynamoView.WindowClosing > RevitDynamoModel.ShutDown
    2. DynamoRevit.DynamoView_Closing > IdlePromise.ClearPromises 
    3. DynamoRevit.DynamoView_Closing > IdlePromise.Shutdown
    4. DynamoRevit.DynamoView_Closed
    5. RevitDynamoModel.ShutDown > IdlePromise.ExecuteOnShutdown
    6. RevitDynamoModel.ShutDown > DynamoModel.ShutDown
    7. DynamoModel.ShutDown
    8. RevitDynamoModel.ShutDown > IdlePromise.ExecuteOnIdleAsync (PostableCommand.ExitRevit)
    9. Shutdown delegate NOT executed (#5 comes after #3) 

##### ShutDown sequence 3:

    1. DynamoRevit.DynamoView_Closed
    
There are various ways a shutdown sequence can be initiated:

1. Pressing ```X``` button on Dynamo window (sequence 1)
2. By update manager (sequence 2)
3. File > Exit menu item (sequence 2)
4. Closing Revit main window (sequence 3)