Updated with GCM. Not fully tested yet
Updated sending model
Basically we send messages directly to user socket as well as send a GCM downstream message
The client can decide whether to trigger a notification or not if the app is in front

To tweak: only send the newest message.