Revamp login logic and fix multiple players being able to log in.


This commit modifies LoginHandlerStart to check for existing players before allowing the client to login.
implementing a Runnable instead of extending a Thread is philosophically more correct. When you extend an object, you're implying you'll change it's behaviour. Technically, `ClientAuthThread`doesn't modify any existing behavior in the Thread object (doing so might be dangerous too!). Instead, you're only giving a thread something to run, a Runnable.

http://stackoverflow.com/questions/541487/implements-runnable-vs-extends-thread
http://howtodoinjava.com/2013/03/12/difference-between-implements-runnable-and-extends-thread-in-java/