Refactor out global key listener and key sequence

Run t.py and press some key will show the keyboard event.

Use 'GlobalKeyListener' to register windows keyboard hook, require
a windows message queue to function (which QApplication.exec_() is
capable of).

Module 'key' represent the concept of:
- Key Sequence: a combination of key presses & releases.
- TrigerPool: a collection of KeySeq -> callback pair.
    (maybe need something called 'triger' which enable insert
    multiple callback into any position of a key sequence)
- Event: keyboard event that will later normalize the pyHook event
  and Qt event.
Figure out the FIFO principle for command like key sequence

Command like key sequence doesn't necessarily satisify the
'a down a up b down b up' pattern.

No, if we type fast enough, it maybe like this:
'a down b down a up b up'

That's FIFO, see key.TriggerPool.notified():
when some key is pressed, we put its id into a queue,
then when some key is released, we take its id and compare
what we got from the queue, they will be identical.
Add documentation.

See doc/key-sequence.txt
Find a way to distinguish type-in and modifier

View key sequence(series of key presses and releases) as
points and line segments.

A key press/release pair forms a line segment where
begin and end point is represented by press/release respectivly.

If line A contains line B, then key A modifies key B:
    abBA -> a(b)
    a__a
     bb

If not, then it's type-in:
    abAB -> ab    aAbB -> ab
    a_a           aa
     b_b            bb
Implement key sequence parse

See sub/key-seq-permutation/*.txt for some examples
Add comments and remove debug code
Parse key event in key.TriggerPool

See sub/key-seq-permutation.py for more infomation
Implement (+ ctrl ;) meaning ; down while holding ctrl

When type fast enough, Ctrl-; will become "<ctrl>;<ctrl>^;^",
so the global bring out hotkey has a special semantic meaning.
Until we find a better way to fit everything together,
we use a brute force algorithm to handle this:
expand every key sequence into up/down key event.
Add develop log

Initial content come from app.yinxiang.com
Add some log and documentation
Implement a raw key-seq logger
Move TODO into a separate file
Add log file
Merge branch 'master' into dev

* master:
  Change human readable date format to YYYY-MM-DD
  add screenshot in README
  add pyHook into environment of README

Conflicts:
	README.md
Add 'open cmd and cd to path in clipboard'
Add 'open cmd and cd to path in clipboard'

* dev:
  Add 'open cmd and cd to path in clipboard'
  Add log file
  Move TODO into a separate file
  Implement a raw key-seq logger
  Add some log and documentation
  Add develop log
  Implement (+ ctrl ;) meaning ; down while holding ctrl
  Parse key event in key.TriggerPool
  Add comments and remove debug code
  Implement key sequence parse
  Find a way to distinguish type-in and modifier
  Add documentation.
  Figure out the FIFO principle for command like key sequence
  Refactor out global key listener and key sequence