Built in closure functionality

Made protocol declarations optional and built in closure functionality for convenience.

Now a call can be made as follows...

self.socket = WebSocket(url: NSURL(scheme: "ws", host: "someURL.com", path: "/Echo")!, connect: {
            println("connected")
            self.socket!.writeString("Hello, World!")
        }, disconnect: {
            println("disconnected")
        }, text: { (textReceived) in
            println("received data: \(textReceived)")
        })

I have also created a few more convenience initializers in case you might not need the data or failure events.

Thank you so much for this great code base! 
Could we make an error variable so we aren't repeating it in both the closure and delegate?