Merge pull request #18 from csmith/master

Fix timestamps breaking actions
Socket improvements.
 - Don't get tied up dealing with "bad" SSL sockets. If sockets underflow too many times, break the ssloop. (Closes issues #21)
 - Sockets now have PING timeouts rather than staying open forever. (Closes issues #14)

Changes to .gitignore
License modifications to SSLByteChannel.
Add missing : when broadcasting client-originated messages to other logged in clients.
This should fix some clients not showing privmsg's etc that other clients send.
Add git-based versioning to dfbnc.
Rather than using a static version in the source code, `ant jar` now adds version output from `git describe` to a config file stored in the jar, this is then read by the bouncer during start up.
Add missing file, correct exit codes, update "show version" command.
Remove debugging.
Fix version command!
Tweak ping timeout checking.
  - Use config settings - timeout.threshold and timeout.frequency
  - Change the defaults
  - Require a minimum of one "inactive" loop, so as not to be pinging every time.
Tidy up some short-commands related code in the following commands:
    - show sessions
    - show commands
    - show version
    - servertype
    - first time
    - abstract set
    - abstract list
Add libraries folder libs/
  - Add ant-contrib to libs
  - Add jna to libs
  - Add junit to libs
  - Add mockito to libs

Rework build file a bit, call build.properties first, use some ant-contrib vars rather than properties in some places.
  - Enable jar compression by default (disable with ant task `nocompress`)
  - By default, certain libraries (jna) are merged into the jar, this can be disabled with `nomerge`
  - javac task can now exclude stuff
  - Tests now build and run by default!

Remove some trailing whitespace!

Add experimental forking support! (Not tested on Windows yet)
  - This uses a modifed version of "Akuma" (Junk was removed)

Add support for writing to a log file rather than only the console.

Where "" is an option for shortcommands, "<cr>" will be shown in the list of available options
Don't break the jar
Check if forking is available before actually trying to fork anything.
Add missing file.
More robuse forkability checking
Correction to shutdown messages.
Fix Socket Exception when socking is closing.
Tweaks and Changes
Update the Parser
Code changes required by updated parser.
(Minimal changes required, yay for a mostly-stable API \o)

Change how parser callbacks are registered. Rather than needing to
register each one manually, we now register for every callback that
we implement the interface for.

Some changes to parser handling so as not to assume that we always have
an IRCParser. (We do, but lets not assume it!)

Fix not actually sending PINGs before timing out a client anymore

IRCServerType now correctly asks the IRCConnectionHandler to close
it's connections when it should.
I think this is probably required!