Engine-XMPP: wasn't able to close unsynced (not fully joined) mucs

in case of long delays this could easily happen
also, regression-danger due to nonexisting chat windows that the server might send messages for
Engine-XMPP: a server<->client race condition could cause a closed chat to be joined

now this kind of chat is automatically closed and an error message is displayed in the protocol chat
this required a refactoring of OnGroupChatPresenceError because that function expected a non-null XmppGroupChatModel
Frontend-GNOME-XMPP: there was no context menu entry to remove contacts from the roster
[Engine] New partial message buffer implementation based on JSON and Git

- Include BSD 3-clause licensed ServiceStack.Text library for
  JSON serialization / deserialization
- Include GPLv2-only + linking exception licensed libgit2sharp library for
  storing messages in a Git repository
- Added DataContract attributes to MessageModel and related to hint
  the JSON serializer
- Initial partial GitMessageBuffer implementation based on Index
  - Implemented Add() and get_Count()
  - Stage all new messages to Index
  - Commit non-empty Index every 60 seconds
  - Commit on Dispose
[lib/libgit2sharp] Updated for public Index.AddToIndex() and UpdatePhysicalIndex()
[Engine] Implemented MessageDtoModelV1
[Engine-Tests] Added Newtonsoft.Json benchmark
[Engine] Use milli-second precision in MessageModel.Equals()
[Engine] Added Flush() to IMessageBuffer
[Engine] Added GetRange() implementation to MessageBufferBase based on class indexer
[Engine] Fixed GitMessageBuffer.Count
[Engine] Implemented GitMessageBuffer get indexer
[Engine] Implemented GitMessageBuffer.GetEnumerator()
[Engine] Guard log calls with MSGBUF_DEBUG define checks
[Engine] Correctly lock CommitMessage before use
[Engine] Initial JsonMessageBuffer implementation
[Engine] Implemented JsonMessageBuffer.GetRange() and get indexer
[Engine-Tests] Enhanced message buffer test-cases
[Engine-Tests] Added test-cases for JsonMessageBuffer.GetChunkFileName()
[Engine-Tests] Fixed cold MessageBuffer.GetRange() benchmark