Delay of 2s across the board

Remove the second variable delay in takePhotoWithDelay and passing
delay through to ImageSnap. More consistent delays all around
Some basic commenting in prep for other changes
Screensaver end callback

Adding a NSNotificationCenter for the NSDistributedNotificationCenter,
which captures a huge amount of stuff on the system. adding an Observer
for specifically the screensaver ending. Adding subscription and
unsubscription and a function to handle the ending of the screensaver.
Tested with screensaver with no password and with password. This works
either way.
Image ratelimiting / debouncing

Adding a blocking function to prevent multiple callbacks at the same
time (or close together) from causing either a) a function to throw an
exception because an object is busy doing something already, b) getting
into code where it looked like something was available but isn't now,
or c) multiple pictures within a few seconds.

This blocking is simple and works by creating a synchronization group
which controls a BOOL so that only one call can edit the BOOL at the
same time. It also sets a timer in another thread to reset the BOOL
after some time (10seconds for now) so that we have up to 10s of
unlimited bad calls against the function before another one wins.

The logs state when a thread tried and won or lost.

An earlier commit to make the 2.0f delay standard across the board
helped here. Everything including the menubar call go through to ensure
nothing fights with each other.
rename messageReceived to powerMessageReceived

Making it more clear that the messageReceived function is for kIO*
functions concerning power and not Notifications from a NS-space, which
are text fields you would case over, not objects.