LISTEN / NOTIFY support

Continuation of discussion on #28 

I've implemented direct messaging instead of GenEvent, storing the PID of the caller on `Postgrex.Connection.listen/3` and removing it on `Postgrex.Connection.unlisten/3`.

I've implemented dead-process checking by using `Process.alive?` before sending the notification, but I wonder if there is a better way to do it? I suppose we could delete the process from the HashSet when it's detected to be dead, and when the HashSet size reduces to 0 we can send an UNLISTEN query to the server?
That's just with `Process.monitor/1` right? Right now, I'm storing the interested PIDs in a HashSet within a HashDict, using the channel name as a key. The point of monitoring the process is to remove it after it's died, I assume -- is there a better way to store this in a reverse-lookup-able way outside of making a reverse PID key => channel name HashDict as well?