Make sure gboolean tm_source_file_parse() returns the right value

Previously, after finishing the while loop TRUE was returned - this is
wrong because the while was running because parsing was unsuccessful.
Make it work the same way as in ctags (parser() always succeeds,
parser2() returns whether to retry or not).

(The return value actually isn't used, it's just to make sure we know
what we are doing.)
Always parse buffer instead of file

This brings the linux kernel parsing time from about 20s to 12s on my machine.
Unify tag sorting and simplify tag comparison function

Use the same (or compatible) sorting criteria everywhere.

Add tm_tag_attr_line_t to sort options so even after merging file tags
into workspace tags, the same tags defined at different lines are preserved
and not removed as duplicates.

Sort type before scope because it's cheaper to compare (string vs int comparison).

For some reason, the above changes make the sorting performance worse.
Simplify the tag comparison function a bit and reorder the case statements
in the switch to match the sort order. This (again not sure why), makes the
performance like before.
Don't expose the source file update function to plugins
Fix comment wording
Parse file from buffer only if the file isn't too big

By loading e.g. a huge DB dump into memory we could run out of memory.
Check the size of the file and determine whether to use file parsing
or buffer parsing.

Give up early if LANG_IGNORE set - there's no need to read the file in
this case.
tagmanager: Speed up tag collection in tm_workspace_update()

The implementation first counts the tags because growing the GPtrArray
with set_size() is relatively slow, and anyway slower than counting tags
first.
TM: Use memory-mapped files when parsing real files from memory