ATS: cleanup and rebase

No functional changes. This is a rebase, rename, API consistency changes (virtual keyword and checks for NotNull), and one bug fix (fixing a test mock)
I see that this mirrors DbUpdateException in the relational provider. Some form of update exceptions are probably common to all providers, relational or not, and there doesn't appear to be anything provider-specific in these classes, so probably these should be merged into one class in the core assembly. Feel free to do this as a separate checkin.

Also, we generally put code in the folder that corresponds to the namespace of the class except in cases where this is not practical--such as extension methods in external namesapces. So this should not be in an Exception folder.

Finally, FxCop will complain for exceptions that don't provide a parameterless constructor. But we may not care. :-)