Again, another large refactor

- More javadocs
- new version system instead of reporting "1"
- registered the TOPIC command
- Fix for infinite socket spam glitch: no longer send quit message back
to user who is quitting.
- Replaced returns in JOIN with continues so if illegal parameters are
given in any channel, we can still process the next ones.
- Fixed issues where replies were not being received by the client
because of nickname omission
- Allow channel names other than "#channel"
- Users can actually quit and rejoin without having to use a different
nick. Accomplished by removing the majority of the QUIT command and
giving the job to the User class.
- No longer kill the client if the command is empty or doesn't contain
spaces.
- prevents users joining as anonymous, nickserv, chanserv, memoserv,
statsserv or operserv