BUG: Fix bug that killed YVBKeystrokesDataManager

Callbacks received in YVBKeystrokesDataManager were executed on the main
thread; while most of the times these callbacks were fairly quick to
execute, there gets to be a point where this is no longer the case and
the program ends up generating a timeout error as the code to be
executed in each block took a relatively long time.

This code has been moved to exist in a separate thread with a low
priority. The previous threading approach only executed "time-consuming"
operations in a different thread, with this approach we guarantee the
tasks in the main thread are all very light.

Memo
====

Finding this bug was not easy, though the solution was rather "clear" if
you look at the block that gets executed with every keystroke, the
structure looks like this:

BLOCK:
    UPDATE GUI
    ADD ENTRY TO DB

Given that we cannot move the GUI operations to a separate thread, it
was rather clear that adding the entry to the DB was the only thing that
could be moved, the callback now looks like this:

BLOCK:
    UPDATE GUI
    ADD NEXT OPERATION TO A LOW PRIORITY THREAD:
        ADD ENTRY TO DB

I have also changed the mask of the things that the keylogger responds
to, we now only respond to kCGEventKeyDown events, making the usage even
lighter on the main thread.
Merge branch 'fix-key-tap'