Move JSON logic out of Map
Rename JSONMap to ValueMap
Improve Caching

* StringCache was an unnecessary abstraction. Got rid of it.
* Made a simpler more flexible cache for ValueMap types
Make copies of Context and Traits, documentation updates
Make immutable copies of Traits when inserting into Context, and Context
when inserting into Traits. Also:

* replace TextUtils.getTrimmedLength() with text.trim().length()
* documentation updates
* traits cache returns a thread safe value and avoids reflection
Make ProjectSettings immutable
Remove Diamond Operators
Merge pull request #146 from segmentio/prateek/remove-json-map

Replace JsonMap