Merge branch 'release/v0.4.0' into develop
don't add the same extracted comment twice

since the same comment could be extracted another time from another file
but with the same msgid, it's useful to only show the comment once. Since
the comment section already contains a lot of references, it's bad to also
clutter the result with duplicated comments
don't fail if dynamic flag for gettext is set

if developers tell us by using the 'dynamic' flag in gettext style comments,
that this gt call is used with dynamic content, create_pot task will not fail
any longer. A warning will still be shown. This might be removed in the
future, once it's clear, we really want this behaviour.
hide misleading warning when evaluating code fails

warning should only be shown in verbose mode
show better error message

helps developers spotting the error more easily. At this point, we know for sure,
that the dynamic flag for the string is missing and can not be ignored, so now we
tell the developer about it.
factor out extraction of comments into separate file

We now got a lib/ directory that will contain all sort of modules to provide
the functionality in a clean and modularized way.
be more DRY

handle define and define.async in one if statement
force pofile to latest bugfix version

this allows to be more strict about po file parsing
fail with warning if item can not be extracted

until now, a warning has been written to console, if an item can not be
extracted from a po file, because it has no modules assigned to them.

This is considered an error, from now on. This is possible, because pofile
lib is now able to detect obsolete strings more reliable and therefor there
should be no strings without module references read from a po file.
redundant code is redundant
move extractStrings method into new module in lib/ directory

make it more easy to use from other parts of the code
move more code into extract library

simplify re-use for later features
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
add documentation for new options (reference cache)

users might be glad about documentation
better coding style

move variable definition before it's first use. This worked, since both
definitions are in the same scope, but it's more readable, this way.
be less verbose in case of warnings

this warning was useless without the other warnings shown in verbose mode.
Also hiding this one, pointing users to --verbose mode
version bump to latest pofile lib which fixes this bug

also add a regression test for this behaviour
release v0.5.0