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`

I think it should capture behavior:

* return always integer
* always return size in bytes
* it accept KiB size as parameter ( and similar for rest of values )
* it raises exception
* it accept floats