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.
Revamped place and dig event handling.

Throw BlockBreakEvents in creative (fixes #273).
Fix BlockPlaceEvents returning AIR (fixes #271).
Prevent block break with swords in creative (fixes #214).
Simplified dig and place logic slightly.
Added basic potion effect definitions (fixes #295).
Added checkstyle and fixed code to obey it (thanks @meggawatts).
Added more command-line parameters.
Added command line parameters for jline.

Signed-off-by: William Lebel <lebelwilliam@gmail.com>
Handle invalid command line parameters with a warning only.

This commit changes the server startup code so that it starts even when
encountering an unknown option. This change is motivated by the fact that most
server hosts provide the nogui option in their startup script and would thus
prevent the server from starting.
Further tidied up command line handling.
Added ClientSettings to players for storing settings sent by the client.
Handle torch placement (see #119).
Toggle between normal and inverted daylight sensor on interact.
Use difficulty set in config (thanks @wow4201).
Added config option for keeping spawn chunks loaded.
Implemented 1.8 codecs and add 1 to max packet in GlowProtocol.

New packets (play outbound):
 - 0x41 ServerDifficulty
 - 0x42 CombatEvent
 - 0x43 Camera
 - 0x44 WorldBorder
 - 0x45 Title
 - 0x47 UserListHeaderFooter
 - 0x48 ResourcePackSend
 - 0x49 UpdateEntityNBT

Signed-off-by: William Lebel <lebelwilliam@gmail.com>
Added Eclipse and IDEA gradle plugins and title-cased project name.