Fix a bug on function composition operator

It can't compose A -> B and B -> void
Fix a bug on function composition, Add a test

void -> T >> T -> void
Edit a test: positive/composition2.n
Merge pull request #615 from lambdalice/fcompose

Fix a problem that >> can't compose some functions
Merge remote-tracking branch 'origin/master' into hardcase_work
Work on highlighting of matching braces.