Btrfs support in space calculation (bnc#896176)

- pass `growonly` flag to libzypp when any snapshot is found
- use `btrfs filesystem df` instead of `df` (more accurate)
- Rubyfied and refactored the code before adding new features (was quite a mess)
- tested in the latest build - with a snapshot present the disk widget showed ~1GB less free space (the size of the snapshot), `btrfs filesystem df` reported 100MB less used space than `df`

what more imporant it convert size to integer of bytes! so it is not 42 but 42 * 1024, and same for others