Re-factor the underlying logic that allows the schedule time to be set + unit test

* Moves determine_start_time out of HMBKP_Scheduled_Backup as it's controller code, instead HMBKP_Scheduled_Backup::set_schedule_start_time now simply takes a future timestamp.
* Also removed HMBKP_Scheduled_Backup::get_recurrence_settings
* Unit complete unit tests for the various schedule / recurrence methods on HMBKP_Scheduled_Backup as well as incomplete unit tests for the new hmbkp_ determine_start_time, the latter makes use of a namespaced \time() function to override global time() for testing purposes.
* Cleans up some inconsistencies in the edit schedule form
* Introduces is_cron_scheduled and uses it to check that the schedule is actually scheduled as a WordPress cron job, if it isn't it's re-scheduled.