Added SmartInvoke extension method for Controls, which take the MethodInvoker, EventHandler and WaitCallback delegates as parameters. These are special-cased by the Invoke methods for performance, and strongly typing them helps in particular in making sure lambda expressions are of the correct type to take advantage of this.

Internally Begin/EndInvoke is called as a pair so the wait handle can be disposed (which is leaked and must be finalized instead in MS's Invoke implementation). Added similar functionality to IdleWorker.
Changed a couple of pinvokes to use HandleRef where appropriate.
Changed Pony class to reuse some enumerators to prevent repeated allocation from boxing of IEnumerable types.
Fixed fatal error handler to exit program and prevent JIT dialog/OS handlers from being shown.
Changed PonySelectionControl to handle invalidation of image area when image is shown/hidden.
Fixed the references in a few xmldoc comments.

Made minor tweaks to the names of a few things.
Remade ExceptionDialog into a class used for top-level error handling.

Tweaked the top level error handling a bit.