Renamed SafeSubstring param and supporting logic

SafeSubstring was incorrectly passing "length" as "startIndex".
Added tests for SafeSubstring

Added tests to validate the index and length parameters of the underlying Substring.
Merge pull request #415 from jerbri/patch-2

Renamed SafeSubstring param and supporting logic - v3
Fixed broken SafeSubstring unit tests
Stopped JsonValue from getting escaped over and over for each serialization call
Merge pull request #419 from ioninteractive/v3-jsonvalue

V3 jsonvalue
Support for after serialized hook. Required to support OnSerializedAttribute (WCF Support). See unit test for details.
Support for deserializing OrderedDictionary types.
To support full compatibility to other serializers the TypeSerializer should take care of empty strings as well.

Unit tests are also provided.
Revert "Support for deserializing OrderedDictionary types."

This reverts commit eabbf9f85ae1186386f9b4ca9230f263d8d422d9.
Add fallback support for IDictionary types like OrderedDictionary
Huge performance improvement when using deserialization hooks.
Merge pull request #422 from twenzel/v3

WCF compatibility
Fix for .NET 3.5 API
Merge pull request #423 from twenzel/v3

Huge performance improvement