Create log_dir path directories recursively

This change will create the custom log folder and its parents, if needed, in the case of using absolute paths too.
Make log_dir absolute path checking cross-platform
Add get_root_window method to App class

This comes in handy when the user needs the window instance without importing Window manually or using a Widget instance to call Widget.get_root_window.
Don't take max on empty line.
Set label texture to none for empty text.
When shortening plain label and even single word doesn't fit, shorten char by char from center.
When shortening markup label and even single word doesn't fit, shorten char by char from center.
When shortening, don't restrict width when laying out, otherwise single word might be split across lines, and when rejoined while shortening to single line a space would entered mid word when joining the lines.
Doc fix.
Don't change shorten_from when word is too long.
change method to property
Merge pull request #2169 from dessant/patch-2

Make log_dir absolute path checking cross-platform
Merge pull request #2171 from dessant/patch-3

Add get_root_window method to App class
Merge pull request #2175 from matham/shroten-short

Shorten fixes
Doc fix: label
Merge branch 'issue_2140'
Merge remote-tracking branch 'upstream/master'
Move buffer format conversion to its own file and import it.
Make blit_buffer accept memoryviews and objects that implement the buffer interface in additon to bytes. Use new conversion function.
Update urlrequest.py

Added '''and the response
to the request will be accessible as the parameter called "result" on the callback
function of the on_success event.'''.