UDPSocket.open opens a file descriptor which needs to be closed. If multiple loggers and/or notifiers are created, they will each keep a file descriptor open, possibly leading to a "Too many open files" error. Add a close method to the logger that actually closes the UDP file descriptor.
This changes the interface of `GELF::Logger#add` to be the same as Ruby's `Logger#add`. Before the change the `GELF::Logger` would loose messages if its `#add` method was used like `Logger#add`. This changes the code to use the new interface and uses the same technique as Ruby's `Logger#add` to check for messages and facilities in the body of `#add`.