Introduce a HMBKP_Path class to replace hmbkp_path();

HMBKP_Path handles everything related to finding/creating the backup path, keeping it clean and protecting it.

Replaces all the logic in hmbkp_path() & hmbkp_cleanup() with new atomic methods and introduces unit tests.

It also improves some of the core functionality.

- No longer relies on storing the backup path and default backup path in the options table.
- Instead it simply reads WP_CONTENT dir and uploads and looks for a backup directory directly.
- No more duplicate directories
- No more losing your backups directory if you lose the hmbkp_path option
- handles merging multiple backup directories
Update wp-cli to use hmbkp_path

Also cleans up some other stuff whilst we're here

- Improved docs
- Allow backups to run under safe mode
- Don't attempt to cleanup the backups directory
- Code formatting
Stop excluding duplicate backup directories

No longer needed since duplicate backup directories are now merged.
Merge branch 'master' into hmbkp-path
Actually load the HMBKP_Path class
Fix scrutinizer issues
Comments and formatting
Merge branch 'master' into hmbkp-path
Make function public
Checkout hmbkp-path branch
Merge branch 'master' into hmbkp-path

Conflicts:
	admin/constants.php
	classes/wp-cli.php
	functions/core.php
Merge branch 'master' into hmbkp-path
Merge branch 'master' into hmbkp-path
Fix class name
Fix code coverage config
Merge branch 'master' into hmbkp-path
Use HTTPS in tests setup
Account for various testing environments
Move class to separate file
Add BackUpWordPress test case class