implement reference cache for compile_po task

During development, the po files are not always up-to-date. When new strings
or new modules are added to the sources, those need to be handled by doing
a complete cycle with create_pot and msgmerge to generate usable po files.

This new reference cache for compile_po task takes care of this issue. A cache
containing all strings within the sources will be maintained and references
from this cache will be used. Once the cache is "warm", compile_po doesn't
take much longer than before, with a "cold" cache, one time the time for
create_pot would be needed to extract all strings.

This feature is backed up with new tests, to make sure, extraction works
without any references in po files.
better handle items without referenced module

if the item is not found in the new message cache, this is fine. The string
must have been removed from the sources but is still present in the po file.
The next msgmerge run should at least obsolete that item.
Merge branch 'feature/reference_cache' into develop