Add IP storage.

This PR:
* Add implementation with YamlStorage.
* Add JoinIPStorageListener to store IP on player join.
* Use stored IPs within PingListener.
* Add getStorage method to IconManager.

Using an interface and an implementation in YamlStorage in order to allow for multiple different storage methods in the future, such as MySQL (if that isn't overkill).

I've tested briefly with localhost and seems to be working correctly and persisting through server reboots.