Remove TmWorkObject and all the OO related stuff

In addition, rename all functions, parameters, comments etc. mentioning
work_object and remove unnecessary parameters of various functions.
Delete dead code paths.

Also move common functions like tm_get_real_path() from tm_work_object to
tm_source_file.
Remove unused tm_file_entry.[ch]
Make tm_workspace_update() public
On single file update only merge the file's tags into workspace tags

Since both the file tags and workspace tags are sorted, it is unnecessary
to completely resort the tags for the workspace - instead, remove the
tags belonging to the file from the workspace tags and merge the updated
file's tags into the workspace tags.

The merge is optimized for merging small number of tags into a large array.
For instance, the total number of tags in linux kernel is about 2300000
while the average number of tags per file is about 65 (35000 source files).
Most of the time merge won't be performed so we can avoid expensive
string comparisons and try to make bigger jumps to see if some merge is
needed or not (more details in the source file comments).
Remove the unused inactive flag in TM

It is set only when read from a file but it never gets written to the file
with the TRUE value.
TM: use the same format of docstrings as in the rest of Geany
TM: move function descriptions from headers to sources

To make it consistent with the rest of Geany.
Use the new merge implementation also for global tags
Swap the merge arguments if len(small_array) > len(big_array)
Remove unused tm_tags_custom_sort() and tm_tags_custom_dedup() and friends
Add #if 0 around unused TM functions and move them to the end of the file

Similarly, add #if TM_DEBUG around various unused debugging functions.

The #if 0 surrounded functions are good candidate for future removal
if decided they are not needed any more.
Remove the unused (and misleading) tm_tag_free()

It just calls unref() which might not actually free the tag if the refnum
is more than 1.
Where possible, convert functions to static in TM
Fix division by 0
Remove tm_tag_file_t and all its uses

File tags aren't used for anything in geany and neither the existing
global tag files seem to use them - remove this concept from geany.
Get rid of the file struct in TMTag, preparation for the union removal

The union on TMTag is very confusing and rather dangerous. The fields
file/timestamp and line/lang overlap. Some implicit assumptions are made
in the code - timestamp is never set so when file is NULL, the file
struct should be used to get the lang member. Rather avoid using unions
and move the lang member to the entry struct together with the other
attributes.
Get rid of the nested members in TMTag

The only real change is the removal of struct and union in TMTag, the
rest is purely mechanical removal of "atts.entry." everywhere.
Since lang is now always part of TMTag, always set its value

This makes it less confusing for code accessing TMTag so it can always
find the language in tag->lang and there is no need to access it through
tag->file.lang.
Fix signed vs unsigned comparisons
Remove some dead code