Make ProxyPingEvent async
Add player list header / footer API.
Add Title API.
Only update the dns cache on new lookups (Fixes #1221)

This causes the cached entry to be looked up every 5 minutes instead of the previous system where it was kept as long as it was used. This fixes an issue where after Mojang's session servers go down the ip address tends to change. This caused bungee to repeatedly hit the old (inactive) one which with the previous system would be re-cached every time someone tried to connect
Trove should not be a core depend.
[#1218] Check which player instance we remove from the connection maps.

Legitimate but slightly sneaky fix for the issue of racing for addition / removal. An alternate fix would be a multimap.
Merge remote-tracking branch 'upstream/master'