-Did a review of all lock statements in use, removing unused ones and inserting those requiring lock statements. The most-affected classes are those of Task and of Logger. These two classes are now thread-safe.
-When a task is canceled we no longer throw a FatalException?, instead an OperationCanceledException? is thrown

Create a new task type - tasks which are run manually. This differs from tasks run immediately in that tasks run immediately has the connotation of being a one-time task; task run manually can be run multiple times. At the same time, tasks which are run immediately will be affected by the automatic deletion; tasks run manually will not.

-Fixed r1091. By using properties the designer could not be used.
-Let the user decide whether he wants locked files to be closed when encountered. We won't create a new task for running on restart anymore.

Fixed some FxCop? warnings
-Seal all our default plugins' erasure methods since they are not supposed to be inherited
-Don't return a List from the Unlocker module (now returns ReadOnlyCollection?)
-Call GC.SuppressFinalize? when using the Disposable Registry Settings manager
-Declare the Modified field of the BuildInfo? class to be const instead of readonly

-Sent the CommandLine? class for a slight rewrite - the properties are now automatic properties, and the command line is no longer passed to the constructor as that would result in a virtual call in the base class constructor; instead a Parse function is used.
-Instead of mapping actions to handlers, use the Types instead
-Convert the CommandLine? class to be a Singleton-like class, where the CommandLine?.Get function will return a CommandLine? object representing the action requested
-Instead of letting the user specify files without a --, - or , we now need the user to specify --file=

If while executing a command-line call we get an Unauthorised access exception, return ERROR_ACCESS_DENIED to the calling process. In the case of the shell extension, this will re-spawn the process with administrator privileges. Implements #216.

-Change the LastSession?DateTime? value in the Logger class to be a public property. This allows us to know which is the last/active session.
-Also fixed the wrong event function called when a New Session event should be raised. Also, the event was unreferenced and now it wll be called.

-More error-proof cluster tip erasure. This is because of how we now cache a reference to the opened handle so when the StreamInfo? class needs to set file times it can use the cached exclusive handle.
-Do not let the OnProgressChanged? event be called with an empty item name

Store the task list in a local appdata file instead because task lists with log messages can grow to a few megabytes. This also meant that I wrote a compatibility class to migrate old task lists to the new location.

-Create a Hide button for the progress dialog
-Catch object disposed exceptions when updating the progress dialog. Since Control.Invoke can proceed asynchronously (because a NULL message is pumped to the application message loop) we may be called for progress updates even after a Close()
-Relabelled tab orders

-Placed some code which throws exceptions into more try-catch blocks. The exceptions we deal with here are UnauthorizedAccess? exceptions which are thrown whenever we try to traverse the drive for file cluster tips' erasure
-When a user does a folder erasure, delete all empty subfolders of the target if they are empty after the erase regardless of whether the folder should be deleted when empty