Move eventMonitor to client

In my test suite, I create a `dockerclient` instance for each test. `dockerclient` has global state that isn't tied to the client and didn't clean up its goroutines, causing doubled events. This fixes that by moving the `eventMonitor` to the client. I also also changed the stream listener to use `JSON.decoder`. Another issue I ran into was tons of garbage events returned from the connection (with the `JSON.decoder` approach and the previous). I added a simple check for them, but it's only a workaround to what seems like a Docker bug.

I added the name to the Container struct returned when creating a container if it was passed via options. This is useful if you're using the name and passing it on to other methods.

I've had problems where I don't see events sometimes listening on the Unix socket, but they appear fine on TCP. Is this a known problem? I doubt it's client specific.