Support for more comprehensive harvesting mode vs binary safe-mode.

https://bugs.launchpad.net/juju-core/+bug/1345553
Agree 100% in principal (it bugs me a lot). Only doing 1 or 2 out of the many does make the code look out of place a bit though. 

Also, tests should not use the const. The tests should use the stringified config setting names eg "provisioner-harvest-mode" etc. This verifies that the tests are correctly written and also causes deliberate breakage in the tests if something changes, forcing the developer to consider the tests.

I'd like the tests changed but up to you whether to keep the consts or not.