Join client to room based on user ID

The client emits a handshake event containing the user ID.  The server adds the socket to the room keyed by user ID.  This is so that any messages addressed to the user can reach them via the room, avoiding other clients.  It also means a user can open multiple tabs and receive the same message.
Handle notification type messages on both server and client

Also includes a test script to POST an example notification
Rename to make script intent clear amonst other scripts
Emit notifications based on action - either created or read
Use a hash to check if a socket is allowed to join a room

If the client can provide a valid hash that matches the hash generated by Flumen, the client can join the personal room that belongs to the user.

If the hash is invalid, a socket cannot join the room but can still receive global messages.
Make flumen exit if no secret is configured
Add development secret into the environment for testing
Merge pull request #3 from meducation/personal-messages

User Notifications