Changebar port from codeblocks

This patch enables experimental scintilla changebar for geany. For testing only.

Conflicts:
	scintilla/src/CellBuffer.cxx
	scintilla/src/CellBuffer.h
	scintilla/src/Document.h
	scintilla/src/RunStyles.cxx
	scintilla/src/RunStyles.h
Add sidebar tree

This is an implementation of cusomizable sidebar tree. This patch keeps
existing sidebar and adds new option - show documents in sidebar as tree.
Merge remote-tracking branch 'upstream/master' into changebar

Conflicts:
	scintilla/src/Document.cxx
Handle binary files.
document.c: Handle documents with pending info bars on close

When an info bar is shown the document is set to changed. But it is
prevented from being saved until the the info bar is dealt with by the user.
However, when closing the document, this is not desirable because the pop up
dialog ("save changes?") offers to save the file which should work regardless
of an info bar.

To avoid ambiguous code we now also use custom but properly named response ids.
notebook.c: Add new GeanyPage class.
notebook: Use GeanyPage to create the notebook pages.
notebook: Remove tab_count_changed() function and dead code

tab_count_changed() is not necessary because the same can be achieved
with the "page-added" and "page-removed" signals. This also automatically
works for other other cases of page count changes.

Also remove dead setup_tab_dnd() code. The "page-reordered" handler does nothing.
document: Remove duplicated code

Since document_compare_by_tab_order_reverse does the exact reverse of
document_compare_by_tab_order the code need not to be duplicated. Instead
document_compare_by_tab_order can be called and the return value be reversed.
notebook: Add GtkLabel member to GeanyPage.

< ... >
notebook: mru_docs: Store the page widget instead of document pointer

on_notebook_switch_page() has only the page widget at hand when manipulating
the mru list. And a future commit will add a similar signal handler that needs
to do the same. To save multiple costly sci->doc lookups the mru list just
stores the widgets instead. It also allows removing on_document_close()
from notebook.c (merged into removed-page handler). This change is going to be
needed if we ever want non-GeanyDocument-tabs anyway.
mru_docs: s/mru_docs/mru_tabs. It does not store doc pointers anymore.
notebook: Use sci directly in focus_sci()

The detour via document_get_current()->editor->sci is unecessary if sci can
be passed as user_data.
geany.glade: wrap document notebook into paned and add a second one
notebooks: Initialize second document notebook

The notebook is initialized in the same manner as the first one. main_widgets
gets a notebooks array. Its notebook member is kept (for now) to maintain ABI
compatibility.
notebooks: Convert Geany codebase to work with multiple document notebooks

This commit largely reworks code that accesses main_widgets.notebook directly
so that it works with multiple notebooks.
notebooks: Add item to tab bar right click menu to move tab to other notebook
notebooks: Move document to notebook of the right click menu

When selecting a document via tab bar right click menu move it to
the notebook for which the right click menu was opened.
notebooks: Update MRU list when the focus changes in the document notebooks

Previously it was only updated when switching tabs. This leads to the MRU
not being updated when notebooks are switched (without changing their respective
current page). This commit fixes it.

This commit also enforces that, when clicking the tabs itself on the notebooks,
that the corresponding sci widget is focused.
notebooks: Merge focus and switch-page handling of notebooks

The switch-page handler in callbacks.c handled a lot of GUI work needed
when document tabs are changed. The same work is needed when the focus between
notebooks changes (this is the same as a tab switch but does not cause the
signal).