Replacing all JSON gem usage with Chef::JSONCompat usage

Wrapping up the work for Chef 12 that @lamont-granquist started.  Long live ffi-yajl!

@opscode/client-engineers 
This is fine. In the past I encountered this problem and found that it was caused by ffi-yajl or `JSON` getting used in different scenarios based on whether the ffi-yajl "monkey patch" was loaded and whether it was loaded before or after the "real" json gem/lib. You probably changed some of those factors elsewhere, but not a major issue.