Round sizes in humanReadable instead of flooring them

humanReadable representation of a Size instance can round the values instead of
flooring them because it should never be passed to any code requiring the
precise size. And it's much nicer to give user '9.98 GiB' instead of '9.97 GiB'
when they enter '9.98 GiB'

Also get rid of the unnecessary _trimEnd() method, the Decimal() constructor can
do the same for us.
Make humanReadable size use binary prefixes and nicer units

We should always give humanReadable representation of a Size instance with
binary prefix, because that's the preferred way of representation. Also, if the
value is less than 10, we should use the smaller unit, because that means more
decimal places could be interesting.
Make sure that using just k/m/g/... results in KiB/MiB/GiB/...

We want these onechar specs to result in binary units used.
If size is an integer value, show it as an integer value

No point in showing 500.0 instead of 500.
Add some more tests for the Size.humanReadable method