FDO: improve implementation

Summary:
  - Removed a large amount of duplicate code.
  - Support aarch64.
  - Generalized comments and makefile for future profiling
    solutions (i.e. the sample based PGO with LLVM).
  - Corrected incorrect and misleading profile path
    warning.

Change-Id: Ie1a686e75433594db9de4421ecae1b3cc57f299e

Test Plan: verified

Reviewers: randall.rushing, synergy

Reviewed By: synergy

Differential Revision: http://review.codefirex.com/D39