Fix Extract task to correctly extract messages with context

Currently ExtractTask overwrites previously found messages even if message has different context.
```PHP
echo __('letter');
echo __x('A', 'letter'); // overwrites message without context
echo __x('B', 'letter'); // overwrites  message with context "A"
echo __x('A', 'letter'); // overwrites  message with context "B"
/*
Actual result:
message "letter" with context "A" at lines 1,2,3,4

Expected result:
message "letter" with no context at line 1
message "letter" with context "A" at lines 2,4
message "letter" with context "B" at line 3
*/
```

The fix is to group messages also by context.