Swap cookbook resolution strategy from shell outs to using Ruby APIs.

The driver behind this is to minimize the amount of fork+exec that exists in the codebase which will help with platform portability, namely Windows. It should also make capturing dependency resolution errors much easier since they will be Ruby exceptions not shell exit codes.

Currently for Chef, there are 2 external resolvers that ship in Test Kitchen:

- [x] Berkshelf Ruby API
- [x] Librarian-Chef Ruby API