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`

The ``reduce` bug mentioned by Pepa reveals a gap in the test: it does not have any line without `used=`. (In practice I cannot produce one either, but it would be a good futureproofing to add "Lines without used-equals are skipped")