MDL-39087 Fix plugin_manager::can_uninstall_plugin() implementation

There was a false positive result for subplugin required by other
subplugin. See the unit test.
MDL-39087 Improve the Plugins overview renderer

As suggested by Tim Hunt during the peer-review, rendering methods
should not set properties of the page they are producing HTML code for.
Additionally, the page now uses correct check that the uninstalling can
happen.
MDL-39087 Use progress_trace class to display uninstallation progress

This is much better API than using the array passed by reference. At the
moment, it is pretty hacky as it abuses text_progress_trace to output
raw HTML echoed by uninstall_plugin() but that will be improved later
while moving the logic out of that function into the plugin_manager.