battery and battery.watcher API

Per #261, a battery API has been introduced.

Documentation as follows: 
## battery
Functions for getting battery info. All functions here may return nil, if the information requested is not available.
```lua
battery.cycles() -> number -- Returns the number of cycles the connected battery has went through.
battery.name() -> number -- Returns the name of the battery.
battery.maxcapacity() -> number -- Returns the current maximum capacity of the battery in mAh.
battery.capacity() -> number -- Returns the current capacity of the battery in mAh.
battery.designcapacity() -> number -- Returns the design capacity of the battery in mAh.
battery.voltage() -> number -- Returns the voltage flow of the battery in mV.
battery.amperage() -> number -- Returns the amperage of the battery in mA. (will be negative if battery is discharging)
battery.watts() -> number -- Returns the watts into or out of the battery in Watt (will be negative if battery is discharging)
battery.health() -> string -- Returns the health status of the battery. One of {Good, Fair, Poor}
battery.healthcondition() -> string -- Returns the health condition status of the battery. One of {Check Battery, Permanent Battery Failure}. Nil if there is no health condition set.
battery.percentage() -> number -- Returns the current percentage of the battery between 0 and 100.
battery.timeremaining() -> number -- Returns the time remaining in minutes. Or a negative value: -1 = calculating time remaining, -2 = unlimited (i.e. you're charging, or apple has somehow discovered an infinite power source.)
battery.timetofullcharge() -> number -- Returns the time remaining to a full charge in minutes. Or a negative value, -1 = calculating time remaining.
battery.ischarging() -> boolean -- Returns true if the battery is charging.
battery.ischarged() -> boolean -- Returns true if battery is charged.
battery.isfinishingcharge() -> boolean -- Returns true if battery is finishing charge.
```

## battery.watcher
Functions for watching battery state changes.

``` lua
battery.watcher(fn) -> battery.watcher -- Creates a battery watcher that can be started. When started, fn will be called each time a battery attribute changes.
battery.watcher:start() -> self - Starts the battery watcher, making it so fn is called each time a battery attribute changes.
battery.watcher:stop() -> self -- Stops the battery watcher's fn from getting called until started again.
battery.watcher.stopall() -- Stops all running battery watchers; called automatically when user config reloads.
```