Add diagnostic facility to Test Kitchen, usable with `kitchen diagnose`.

Most of the primary domain object now support a public `#diagnose`
method which returns a Hash of useful information. This is combined and
summarized in a Kitchen::Diagnostic object which can be created with the
`kitchen diagnose` CLI subcommand.