Better test coverage.

* ShieldedDict and ShieldedTree are now covered by more tests.
* Accessibility of certain members of the dict and tree was adjusted to
bring them more in line with standard .NET collections.
* Keys and Values properties now work out of transaction as well, since this
fits better with LINQ ToList and ToArray also working out of transaction (due
to CopyTo suporting this).
* In PreCommitTests and ProxyTests, some tests based on races were
improved to reduce the risk of failing because the races, indeterministic as
they are, would not occur.