This has been a long time coming. It resolves a whole array of issues
related to conversion between various units. Under the covers, using
Size means we are storing sizes as Decimals representing the number of
bytes. It also switches the size module's default from decimal to binary
since binary is what is actually used at the lower levels (sector size,
lvm extent size, md chunk size, &c). Using decimal makes it impossible
for things to have round-numbered sizes unless you intentionally ignore
or discard some precision, both of which have serious consequences.
This patch set also sigificantly reduces our usage of float. The
function blivet.devicelibs.lvm.clampSize was rewritten to not use any
float math.