Attempt to fix md5 issue with backups

thanks @bigbiff for the suggestion

Change-Id: Ie9b55537b7fa300461b015d2b9523d4250e755a9
Update RECOVERY_VARIANT blocking to use project-path-for

Using RECOVERY_VARIANT to allow recovery to reside at
bootable/recovery-(variant) has changed at CM. project-path-for now
handles all the path re-mapping. This is simply a compatibility update
to be able to continue using RECOVERY_VARIANT with TWRP in a CM tree.

Change-Id: I66769d85b2a111e837f206b1c9a5bc07d6ac0d86
mtp: cleanup, fixes and performance improvements

- use std::map instead of linked list
- read directories on demand
- fix writing zip files to storage root
- fix creating directories
- lots of minor fixes
- simplify generation of storage IDs and make them spec compliant

Change-Id: I2137c27549ddbdc58466f2e3aeda464fac70a3c5
performance profile support

Many device trees support the recovery.perf.mode property to
set various core frequencies and online/offline mode. TWRP is
highly threaded, and support for multiple cores on many operations
dramatically recudes the time, e.g., backups, zip flashes, etc.

p2: removed user notifications

Change-Id: I957b8ca40b241c0af0471327eeb329cce1816017
bmlutils: Fix Backup/Restore recovery on some devices

Restoring recovery ($ flash_image recovery) will write recovery also on
the boot partition.
This behaviour should be disabled on some samsung phone in which boot
and recovery are different, in order to restore recovery without
overwrite boot.

It can be disabled via BOOT_AND_RECOVERY_ARE_DIFFERENT
Change-Id: Ie96a539806e8e8f0e4fc785b9be5ec02df9c3580