add a Deserialize method that takes a Type, basically support non-generic calls of Deserialize at a small tax; fixes #60
fix potential ParseISO8601TimeZoneOffset dirty read

The buffer index could go past the end of what it has created, thus
reading old dirty data.
Add _ReadSkipWhitespace, use it for Skip* methods
Use ReadSkipWhitespace() in trivial cases

ConsumeWhiteSpace + ExpectChar becomes ReadSkipWhitespace + CheckChar
Remove redundant end-of-stream check

ThrowExpected(c) is called if we don't match the expected char anyway,
so don't need explicit check for EOS.
ReadList using of ReadSkipWhitespace
ReadDictionary using ReadSkipWhitespace
ReadObjectAutomata using ReadSkipWhitespace
ReadObjectDictionaryLookup using ReadSkipWhitespace
ReadAnonymousObjectAutomata using ReadSkipWhitespace
working on #61; make the returns of .GetEnumerator for dynamic objects *also* dynamic; things can get a little dicy otherwise
more work on #61; 'foreach' likes to insert a convert, so let's make sure we don't loose our magic dynamic behavior if that happens
a little cleanup, a little uniformity; fixes #61
Merge remote-tracking branch 'origin/master' into end-of-stream-bug-fix