Node monitoring and on-the-fly textencoding change

This work is based on the draft node monitoring implementation
created by Vlad Slepukhin during GCI 2012 and includes following:

* Refactoring of the document "Reload" feature - it replaces
"Revert to saved" one because do the same things and a bit more.
Looks like we have to keep "Reload" menu entry alive until
StyledEdit will get more functional Undo/Redo features. Reload
functionality is also heavily used in node monitoring and
on-the-fly text encoding changing. Fixes #6887;

* Support for text encoding on-the-fly switching. This make
life easier for those who lives in countires with multiple
popular 8-bit encodings. Russia is the sample of such
de facto standards' clash (KOI-8R vs CP1251 etc.);

* Node Monitoring support with alerting user in case the file
size or modification time were changed. Another alert is shown
in case edited file was removed or moved outside of the current
volume. Moving file inside of current volume silently changes
references. Choosing "Ignore" will supress new change alerts
until next Reload or Save user request;

* Do not nag user on quiting window with zero-length untitled
document. Not a Big Deal but annoys in some cases using this
editor session as temporary storage.
Fix crash in BListValueNode.

- Don't try to create children if location resolution failed.
Factor out a PrintValueNodeGraph() helper from DebugReportGenerator.

- Intended to also be used by CLI to print variables there.
Refactor DebugReportGenerator to use PrintValueNodeGraph.
sem_timedwait: fix errno, return value and NULL behaviour

* Takes into account remarks from Ingo.

Signed-off-by: Jerome Duval <jerome.duval@gmail.com>
Signed-off-by: Ingo Weinhold <ingo_weinhold@gmx.de>
style fix as suggested by axeld and jscipione.
swpipe: Improve llvmpipe environment

* Only call correct public llvmpipe includes
* Clean up tracing
Ensure that node pointer is valid before traversing.
Always forward ValueChanged() event.

- If creating children failed, we wouldn't forward the event on
  to the listeners.
Refactor DebugReportGenerator to use jobs.

- Instead of asking nodes to resolve themselves directly,
  DebugReportGenerator now uses the interface listener to ask the
  debugger's workers to resolve them on its behalf.
Hint to layout manager for window width estimation

Fixes #5289

Signed-off-by: Siarzhuk Zharski <zharik@gmx.li>
Fixes case style of a label, "Sound file:"
Renamed cusor colour settings.

"Cursor text" and "Cursor background" in the Color popup menu are
a bit unintuitive. Changed to "Text under cursor" and "Cursor".
Using a variable instead of translating a string twice.
Thanks John for the guidance.
LaunchBox: finish saving settings before closing the window (#6347)
Mail: use B_FILE_NAME_LENGTH as limit when saving drafts
Mail: Reworking of the unique filename discovery (drafts)
Mail: don't require a subject to save a draft (#9218)

Also :
 * if the body of message changes, ask to save draft when closing window
 * disable save button when successfully saving draft
WebPositive: Smart URL handling improvements (GCI task)

 - Fixed: WebPositive now successfuly detects foreign protocols and
launches their respective applications.
 - Improved: The decision whether to use a search engine or a DNS lookup
for the text entered in the address bar, including for internationalized
names (IDN) (though we do not handle them correctly later on yet).
 - TODO: escape the query string before passing it to webkit
(for example for: "3+4")
LaunchBox: remove redundant Locking.  Thanks Stippi!