Nicely done ! I don't use TDictionary so cannot comment on its accuracy. (I might use it now its so well documents!). Some very minor suggestions -
Exceptions ? Does (eg) Add() raise an exception if it fails ? In your Exceptions block, you catch just E: Exception which is a bit of a blunt weapon, be nice to know just what exceptions might be generated without digging into the code or deliberately triggering them.
And a really pedantic thing, under "Event Notifications", "...which are triggered if an Key or Value got added/removed". Would you mind using "was" instead of "got" ? Just a nod to cleaner English.
Overall, an excellent contribution, as I said, maybe I use TDictionary now ! Thank you.
Davo