Improve battery support:

- Use dbus+UPower if available (code taken from kovidgoyal@7f73453 and
  refactored).
- Use any battery from /sys/class/power_supply: replace hardcoded BAT0/BAT1 with
  cycle.
- Use pmset.
- Use win32com.client with Win32_Battery object (code taken from an [SO
  question][1] and refactored).
- Use ctypes + GetSystemPowerStatus (from [the same question][1]).

Completely untested (only know that syntax is correct), will probably have to
hear replies from users to merge.

[1]: http://stackoverflow.com/a/21083571/273566

Closes #677.
Fixes #820.
Added line_count segment for vim.

Returns total number of lines in current buffer.

Addresses #556
Merge pull request #947 from magus424/feature/556-line_count-segment

Added line_count segment for vim.

Closes #556
Fix required keys handling: do not require more keys then required
Add ability to copy recursive specifications
Added tabline support

No tests for it yet
Update tests to work with new functionality

Still no tests for new functionality.
Test tabline in test_tabline.vim file
Remove some __nonzero__ methods in tests/vim.py

Just __len__ is good enough here
Set __bool__ to __nonzero__ in DelayedEchoErr

Method __nonzero__ was renamed to __bool__ in Python-3
Fix renderer length computation

Current sum() of once computed _len’s is completely inappropriate in case
removal of the segment caused change in divider lengths: addition or removal of
dividers or change of the divider type when dividers have different length.

Also contains some optimizations: first of all _render_segments is called only
once always, same for strwidth() function for each string. Space is considired
to always have length 1. And do not bother computing any length if no width was
specified.
Add support for has_key(gettabwinvar()) in vim test module
Add tabpage and tabnr arguments to segment_info
Add tabnr segment
Add tabbuflister and buflister listers
Add single_tab segment
Modify test_tabline to also test bufline
Make dividers unicode

Fixes travis problem with old vim
Merge pull request #948 from ZyX-I/tabline

Add tabline support
Add bufnr segment

Ref #705