Cleanup Plugin __init__ method and version handling

Pass hardware version to Plugin.

Ensure that that plugin.name also include the hardware version, so the
detached tabs get the correct window title.
Set size hint height for bottom most spacer items to 0
Force plugin windows to have preferred size before detaching it
Teach advanced options dialog to handle Bricks without Bricklet ports
Teach flashing dialog to handle Bricks without Bricklet ports