Add support for apps/games with no bundle identifier

Some apps/games, like Half Life 2, has no bundle identifier. In this case
we need to check the path of the executable.

This patch also optimizes the way we handle app quirks:
When app is switched (CMD+Tab, etc), the new app is analyzed
for app quirks. These results are cached for quick retrieval.

Also, this patch adds support for Half Life 2 games.