Fix Tensibai Zhaoying's name in the CHANGELOG
chef-client should never send negative values for duration to reporting; fixes 1765

The duration can be negative if a resource changes the system's time.
We should return 0 duration instead to indicate that something unusual happened.
Ensure reported elapsed_time is nonnegative.
don't return negative time
Return values with Time class after stubbing :now of Time.
Clean up DOC_CHANGES.md and update RELEASE_NOTES.md version
Update CHANGELOG with information about bug fix.
Fix error class typo, bump ffi-yajl requirement to pull in bugfixes
Convert CookbookLoader spec to let bindings
Add unit tests for CookbookVersionLoader
Respect metadata name attribute

Fixes CHEF-3307
Remove assumption that cookbook names match dirnames in CookbookLoader

Cookbooks are now loaded with a "preload" step that reads cookbook
metadata to determine the name. Cookbooks are fully loaded later.
Encapsulate cookbook loader map with methods
Use accessors in preference to ivars in CookbookVersionLoader
Use more explicit "inferred cookbook name" for variable
FIXME: stub specs for CHEF-2923 regression tests
Ignore non-critical errors when finding the cookbook set

https://tickets.opscode.com/browse/CHEF-2923

When running `knife cookbook upload SPECIFIC_COOKBOOK`, errors in
metadata files for unrelated cookbooks should not be raised; however, we
must evaluate the metadata for all cookbooks in order to allow the
metadata `name` attribute to be different from the cookbook directory's
basename. Therefore, we must tolerate errors in metadata.rb and re-raise
them only when attempting to load the cookbook with the invalid
metadata.
Fix ruby warning in metadata class
Fix ruby warning in metadata unit test
Convert metadata specs (mostly) to let bindings