Refactor LandscapeInstallFinal for testability. Add tests. Fixes #283

The purpose of this branch was to fix #283.
In the process of writing a test for that bug, some refactoring was necessary to make LandscapeInstallFinal more testable.
I also added some tests for parts of LandscapeInstallFinal that aren't related to #283.

Unfortunately, due to problems getting even a single machine set up in MAAS on our test systems today, I haven't been able to test it IRL.
I'm creating this PR in advance of testing, please don't merge it unless you've tested it.