Prevent clients logging in multiple times (fixes #150).

Also adds (Async)PlayerPreLoginEvent support.
Provide hostname in PlayerLoginEvent.
Implemented AsyncPlayerChatEvent (fixes #103).
Tidied up EventFactory and its uses.
Made some utility classes final.
Support BungeeCord player data on connect.
Tidied up BungeeCord handling, added configuration key for proxy parsing.