Adds a chat feature to improve commucation between headhunters and candidates.
The chat feature uses ActionCable
websockets to provide real-time update.
A chat is always started by a headhunter, who can open a communication window with any candidate applied to his opportunities.
Chat windows aren't opportunity related, so if a candidate is applied to more than one opportunity, the same chat and message history will be used for all of them.
A chat is only persisted after a headhunter sents the first message. Only opening and closing a chat window will not make it persisted nor show it to a candidate.
A candidate can only answer chats started by a headhunter. The candidates chat list shows only persisted chats.