Handle dictionaries with non-object values.

In cases where a Dictionary property had a non-object value type, the
dictionary couldn't be treated like an object. This code will wrap a
dictionary so its non-object values are upcast to objects.
Allow for the preservation of newlines
Allow string and number arguments
Update README.md
Update README.md
Add mutex lock to PropertyDictionary

It was pointed out that since the PropertyDictionary is caching the
properties of types using a static dictionary, it must be made thread
safe.
Even more powerful dictionary detection

There were some more cases where an IDictionary<string, T> was not being
detected by the UpcastDictionary.
Upcast Dictionary Improvements

I wanted to improve the predictability and the efficiency of the latest
UpcastDictionary code. I switched to a breadth-first search of
sub-types, filtering out duplicates.
Eliminate recursive calls in UpcastDictionary

I realized I had tail-end recursion, which could be easily eliminated.
Because of yield return, I think this greatly simplified the code.
KeyFoundEventArgs constructor fix

KeyFoundEventArgs constructor didn't set value leading to always
substituting with an empty string
Merge pull request #29 from zbynek001/master

Generator.KeyFound event not passing value
Update assembly version for NuGet
Treat DBNull as False in Conditions
Merge remote-tracking branch 'upstream/master'

Conflicts:
	mustache-sharp/FormatCompiler.cs