- Create SingleInstance class to handling single instance stuff.
- Instead of calling getInstance() everywhere, initialize each object
explicitly in order when application starts and getInstance()s do not
create instances any more and they merely return the created
instances.
- Only set initial values in construtor functions __init__(). Move the
initialization of context-aware (i.e. things that depend on other
things) to separate functions.
- Split application creation and initialziation into several steps and
them should be called explicitly in the correct order.
This updates the firmware updater to use the new MachineManagerModel
Additionally renamed "machine_type" to "machine_id", which makes it more
selfexplaining, when reading the code.
My printers firmware is not available here and has no heated bed, so
please test this commit!