Implementation using a char[] rather than StringBuilder

Following "standard practice" I have created a
UseCharArrayOverStringBuilder bool to toggle on and off.
Merge remote-tracking branch 'origin/master' into char-buffer-vs-stringbuilder
Changed AlwaysUseCharBufferForStrings and added AlwaysUseCharArrayInsteadOfCharBufferAndStringBuilder
Add char[] buffer functions for numbers

Continuing to add char[] buffer functions as replacements for all the
StringBuilder() ones
Align and fix comments
Merge of upstream/master
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 char-buffer-vs-stringbuilder