Unit tests using ChefSpec

This pull request adds full coverage (at least according to the coverage reporter...) unit tests using `ChefSpec`.

Admittedly, some of the test cases could be written in a clearer way perhaps, but for now I'd say that they're good enough.

Furthermore, it would now be possible to refactor / remove some of the integration tests, especially the one regarding content of configuration files and let the unit tests take care of that.

I change a couple of `Chef::Log.fatal!` statements into `Chef::Application.fatal!` as `Chef::Log` doesn't have a `.fatal!` method anymore.