Add timeToFull/timeToEmpty, recall notice and FullyCharged to Solid::Battery

Review Request #117339 - Created April 2, 2014 and submitted - Latest diff uploaded

Kai Uwe Broulik
117542, 117540, 118558
This adds the following functionality to Solid::Battery:

- timeToFull and timeToEmpty (at the moment provided by PowerDevil but for all batteries combined, this patch does it individually for each)
- rename isPlugged to isPresent (as plugged always confused me - it has nothing to do with whether AC is plugged in but if the battery is "present in its bay", it's also the name of the UPower iface)
- FullyCharged battery state, we cannot rely on the battery being 100%, and since the info is provided by UPower (not on HAL), why not use it
- RecallVendor/RecallUrl when a battery has been recalled by the vendor, currently provided/handled by PowerDevil
- Serial number of the battery

Sorry for the hard to read patch but I also re-ordered some methods to have the order in all implementations and headers the same.
Compiles, solid-hardware5 details /org/freedesktop/UPower/devices/battery_BAT0 reports:

udi = '/org/freedesktop/UPower/devices/battery_BAT0'
  parent = '/org/freedesktop/UPower'  (string)
  vendor = 'ASUSTeK'  (string)
  product = 'UX31-35'  (string)
  description = 'Lithium Ion Battery'  (string)
  Battery.present = true  (bool)
  Battery.type = 'PrimaryBattery'  (0x3)  (enum)
  Battery.chargePercent = 31  (0x1f)  (int)
  Battery.capacity = 83  (0x53)  (int)
  Battery.rechargeable = true  (bool)
  Battery.powerSupply = true  (bool)
  Battery.chargeState = 'Discharging'  (0x2)  (enum)
  Battery.timeToEmpty = 5105  (0x13f1)  (qlonglong)
  Battery.timeToFull = 0  (0x0)  (qlonglong) = '13.223'  (string) ? dunno why it says string, it's double everywhere
  Battery.energyRate = '9.324'  (string) ? same
  Battery.voltage = '7.4'  (string) ? same
  Battery.recalled = false  (bool)
  Battery.recallVendor = ''  (string)
  Battery.recallUrl = ''  (string)
  Battery.serial = ''  (string)