Storage unify

It really helps with complexity of two classes - https://codeclimate.com/github/yast/yast-bootloader/compare/storage_unify

It also make reading how we propose place for stage1 much cleaner.

It need more tests, but it needs more real target maps, where we do bad proposal and what we want achieve.
I mean, this is a big PR and I don't want to spend 3 hours analyzing its every detail. So I want to trust you on the implementation while checking that the interface makes sense. This method's interface is "Propose and set Foo. Many nasty side effects." Please describe Foo (BootCommon.Foo["foo_Foo"] which is a fractal of rb-trees of bitcoins?). Describe the side effects a bit.