Merge remote-tracking branch 'pegwing_ppreminderer/master' into notificatio_manager
Notification Manager and merge

This change adds the notification manager. The notification manager generates and tracks the local notifications made by the application. Local notifications are used to remind the user to perform actions when they are not actively using the application.
Also when the application is in background, the system my terminate the application in which case the only means of reminding the user is via a schedule local notification which allows the user to restart the application to action to reminder.
The scheduler is modified to separate the scheduler state of a item such as an action and the status of the action. Actions are now scheduled, postponed or completed and schedule items are either scheduled, notified, due or completed.
The scheduler state is now saved so that when  the application moves between active and inactive, it “appears” that the scheduler clock has been running when the application has been inactive.
The setting screen has been improved.
Actions now record a completion time which is display in the schedule when complete.
Facilities now have context relevant instructions.

Postponed button and status is represented by “Orange”
On shift button is now green and Off shift is now red.

PPRStickyNoticeView
- Adjust layout

PPRClockTabBarItem
- Factor out initialisation

PPRActionViewController
- Indentation change

PPRSettingNavigationControllerViewController
- Explicitly initialise the clock tab bar item

PPRSettingsViewController
- Changing the date picker does not immediately change the scheduler time. A button has been added to set the time from the picker.
- Resetting default settings now clears actions from the action manager and reloads the scheduler’s schedule
- Use a slider to set the warp factor

PPRSchedulerViewController
Separate schedule state from action state
- tick now sets completion time
- the new action states are displayed

PPRNotification
- An new abstract class representing notifications and how to represent them in UILocalNotifications

PPRActionNotification
- A new class representing action notifications

PPRAction
- Now explicitly initialised with a facility.
- notificationDescription added to provide text suitable for display in a notification.
- Modified to handle new state model.

PPRInstruction
- A new abstract class to represent instructions. Extracted from PPRClientInstruction

PPRClientInstruction
- Now a subclass of PPRInstruction

PPRFacilityInstruction
- A new class for facility instructions

PPRScheduleTime
- Now explicitly checks NSDateComponent offset parameters for relevant uninitialised fields - setting them to 0. This fixes a display issue where these date components were being display as max int.
- Display of offset fields explicitly cast to long

PPRFacility
- Now has facility context relevant instructions.

PPRClientAction
- Add routine to generate notification suitable text.
- Initialise with scheduled event.

PPRFacilityAction
- New class to represent facility actions.

PPRScheduleItem
- A new class to manage schedule status.

PPRActionScheduleItem
- A new subclass of schedule item manage the scheduling of actions.

PPRNotificationManager
- A new class for managing notifications

PPRFacilityActionScheduler
- now uses PPRFacilityAction

PPRActionManager
- actions map public so it can be reset.

PPRScheduler
- Due item processing separated from Future time processing
- Scheduler state save and restore routines added to support application changing state between active and inactive.
- Now using PPRScheduleIItem to manage scheduler rather than state of actions.

PPRTestInitialiser
- the test initialiser publishes its internal state to improve testings
- added a test facility instruction
- improved initialisation of schedule time “offsets”
- loading test data factored out of init
- scheduling events factored out of init

PPRAppDelegate
- due and future items processing generate notifications
- scheduler state saving and restoring added
- “NotiveView” display of received notifications improved.

PPRShiftTests
- add tests for shift object

PPRSchedulerTests
- change due to interface changes.
Order classes in alphabetical order.
PPRActionTests
- add tests for dueTimeDescription
PPRAppDelegate
- adjust inset of displayed notification
Improve handling of schedulerTime

SchedulerTime now is maintained by capturing the wall clock time and the scheduler time at each tick and maintaining the relationship between them rather then “counting” the timer ticks.
When the scheduler time is manually set, the UILocalNotifications are rescheduled.
Care is taken to try to reduce coupling so that PPRScheduler and PPRNotificationManager should not need to know anything about actions. This is not yet completely there.

PPRStickyMessageNoticeView
- remove unused variable

PPRSettingsNavigationControllerViewController.
- Change the name of the notification for scheduler time updates

PPRSettingsViewController
- Change how the schedulerTime is set and maintained

PPRActionManager
- make public “getActionById”
- notify changes to action state

PPRClientManager
- Improve comments

PPRFacilityManager
- Improve comments

PPRNotificationManager
- If the schedule time is reset then reschedule notifications
- Provide a means of removing notifications

PPRScheduler
- Change the handing of scheduled time
- Provide a means to reschedule items.
- Factor out scheduling items and sorting items
- timer tick handling captures the scheduler time and the wall clock time and preserves the relationship between them.
Make ScheduleTImeTests dames as in notificatio_manager branch
Ditto
Merge branch 'notificatio_manager'

Conflicts:
	Pods/Pods.xcodeproj/xcuserdata/davidbernard.xcuserdatad/xcschemes/xcschememanagement.plist
	ppreminderer.xcodeproj/project.pbxproj
	ppreminderer/Managers/PPRActionManager.h
	ppreminderer/Managers/PPRActionManager.m
	ppreminderer/Managers/PPRTestIntialiser.m
	ppreminderer/StringKeys.h
	ppreminderer/User Interface/Controllers/PPRScheduleTableViewController.m
Merge of #23