Adds support for stripped-down Ubuntu images which may not have kvm-ok in their path.

https://bugs.launchpad.net/juju-core/+bug/1342747
> @axw: Correct, I am intentionally breaking the encapsulation principle in favor of the O and D in SOLID design. Specifying where to look for an executable on the file-system strikes me as something that should be up to the caller, not the implementation. A great example is the unit test, as you mentioned.

There's a trade-off: the code is made more testable at the expense of leaking information. If we want to, say, directly inspect kernel modules to decide whether we have support, then we'll have more places to touch unnecessarily.

Imagine what would happen if this function were split off into its own package, and made publicly available. That's only hypothetical, but I consider each project a microcosm, and the use of this function may well spread.

I think the second suggestion I made gives us the best of both worlds:
> have IsKVMSupported call another non-exported function with the path to check.

i.e. we can have a non-leaky API, which just calls through to a dependency-inversion friendly internal function. The internal function can be tested, and the external function need (IMHO) only be visually inspected to the same benefit.