Refactor _parse_expr(), fix get_kconfig_filename()
Refactor _parse_expr(), fix get_kconfig_filename()

Those are related: The hack in _parse_expr() accidentally overwrote the
_filename variable, causing get_kconfig_filename() to return the wrong
filename if the base Kconfig file ended with a 'source' statement.

Remove the hack and explicitly pass all the variables. It might have
made more sense in an older version of the code.

Also add back the grammar in a different format, some more comments, and
a mind dump from tinkering with the parsing code.

ulfalizer/Kconfiglib,ulfalizer/Kconfiglib