Initial commit for toast notifications. Implemented a long polling solution to simulate push notifications from the server to the client. Using noty as the toast notification library. https://github.com/needim/noty. Clients will long poll the server, at a maximum, every 61 seconds.

The request on the server end will block until a notification becomes available. When a notification is available, then the blocked thread will be notified using thread synchronization mechanisms.

Conflicts:
	crits/core/static/css/core.css
	crits/core/views.py
	crits/notifications/views.py
	extras/www/static/css/core.css
Removing some deubg code, changing the notification polling throttle time from 1s to 3s.
Added a "Close All" notifications button. Added error handling to throttle polling attempts from the client side.
Allow a user to acknowledge notifications so that they are not displayed again.
Refactored notifications code from views into handlers.

Conflicts:
	crits/core/handlers.py
	crits/core/static/css/core.css
	extras/www/static/css/core.css

Removing test code.
Throttling notifications on client after 5 consecutive poll failures. Display the "time ago" that a notification was generated. Better formatted notification messages.
Documented non-critical race condition on notification lock manager.
On second thought, there is no race condition since the lock only exists for the initial creation of the notification, and the lock does not change after initial creation.
Added a toast notification config form to user's preferences. Refactored notification JS code out from core.js into its own file. Added support for disabling/enabling toast notifications and the acknowledgment method (i.e. sticky vs timeout dialogs).
Fixing an issue where the "toast_notifications" preferences doesn't exist -- added a check.
Additional error handling if a client is trying to poll for notifications but notifications are disabled for that user.
Code documentation and cleanup.
Added additional source and campaign detailed messages for notification changes.
Fixing Actors bug where if you have an empty aliaes, add two aliases, and then delete both aliases, refresh the page and the last item to be deleted will not be deleted. The database shows a list of [last_item, '']. The empty string should not be in the list. This commit fixes the empty string. This same bug might exist in other areas?
Incorrect existence check, length could be zero and you would never be able to add aliases.
Changed subscribe icon from checkmark to satellite waves. Added notification messages for relationships. Added notification messages generically for list of strings. Also added backdoor, exploit and screenshots notification handling.

Conflicts:
	crits/core/handlers.py
	crits/core/templates/profile.html
	crits/core/views.py
Added some generic processing for mapped mongo fields. Added notification message support for actions and activities.
Added the remaining core notification change message handlers.
Refactored toast notification code, moved things around. Organization.

Conflicts:
	crits/core/handlers.py

Removing test code.

Removing test code
Fix refactored name.