rename chef_object module to chef_object_base
Update for chef_cookbook => chef_cookbook_version module name change
Use new chef_object query name dispatch for create and update
Use chef_object dispatch for set_created and set_updated
Use chef_object:id in delete

This also switches user deletion to be by_id instead of
by_username. Not sure why we decided to go by name previously, but
this way we can use the same code.
Dialyzer fixes for data_bag_exists and environment_exists
Take two on chef_db:create via behavior module
chef_db:update via behaviour module
chef_db:delete/2 via chef_object behavior
Adjust dialyzer: no underspec warnings

This seems to trigger many warnings with little overall benefit to bug
catching.

Also removing the race condition warning which is unlikely to be
useful for this code base.
Remove object specific delete code from chef_db

All of this functionality is now handled by chef_db:delete/2 and the
chef_object behavior.
Fix chef_db:update for argument order on cookbook_version special case
Remove now unused create_* functions from chef_db
Introduce chef_db:list using the chef_object behavior

To begin this refactor, this code introduces
chef_sql:fetch_object_names2/2 as a temporary helper function. Once
we're done, we can rename this to fetch_object_names/2.
chef_sql: add fetch/2
remove fetch_* functions from chef_db / chef_sql
Explore ioc refactor for list query
Promote list/2 to a behaviour api
Removing now dead code
Rename function