Support different value types in IDictionary collections

When we JSON serialize Hashtable that has values of different types, values are serialized incorrectly or InvalidCastException is thrown.

Case 1:
```C#
    Hashtable htable = new Hashtable();
    htable.Add("1-Text", "Hello");
    htable.Add("2-Date", DateTime.Now);
    Console.WriteLine(htable.ToJson());
```
Result:
```
{"1-Text":"Hello","2-Date":"04/10/2013 3:10:37 PM"}
```
Date is not serialized as date. It should be "\/Date(1365592617200+0400)\/"

Case 2 (Please note: Date is a first key in collection):
```C#
    Hashtable htable = new Hashtable();
    htable.Add("1-Date", DateTime.Now);
    htable.Add("2-Text", "Hello");
    Console.WriteLine(htable.ToJson());
```
Result:
```
System.InvalidCastException: Specified cast is not valid.
```