C#: Optionally disable lookup caching in C# Map implementations

This makes a read-only Map thread-safe, by (optionally) turning off the cached key/value logic in the various C# Map implementations.

I also added explicit classes for ObjectMap iterators for performance, similarly to StringMap/IntMap.