Use proxy widget to implement preedit holder

Refactor all key and IM events to go through preedit holder instead, and implement event filter in View to listen to it. This fixes IM behaviors on Gnome, but needs to be tested on Windows. My guess is it should work, though.
Fix event propagation logic

IM method events should go through the filter and reach the preedit
holder; only key press and release events need to be intercepted.
Use UTF-8 when reading from JSON backend

Fix #64

This didn't occur on Windows because I used Qt 5 on it.
Merge branch 'im_fix'

Fix #65