[WIP] UI Coverage Parallel Appliance refactor

This is working, but merits some discussion, and testing. Until we get PRT metadata support, PRT doesn't know that you need to add `--ui-coverage` to your pytest commandline to test this. This is *completely* untested in non-parallelized runs, but might work. I'd prefer to get feedback on parallelized sessions, though. :)

I moved all of the appliance-specific stuff over into IPAppliance, but I think that just made a bit of a mess. We definitely want to leave all of the public `IPAppliance.coverage*` methods on IPAppliance so it's easy to install coverage and collect reports, but all of the work should probably be done inside `fixtures.ui_coverage`.

`fixtures.ui_coverage` itself should have the work it's doing broken out into manageable functions, if for no other reason than to simplify development. I hacked on this in a notebook which right now makes nuclear wastelands look like a nice vacation destination, so I'll refrain from adding that to the PR...