1st commit on llfi restructuring

What has been done:
1. combine the profiling and faultinjection directory to one directory under LLFI, so that it is easier to share code between different passes, and it's easier to manage
2. design a controller that is shared by profiling and fault injeciton passes. the goal of the controller is to have a unified place to select fault injection target instruction and target register
3. move functions that are shared between profiling and fault injection to utils.cpp/.h
4. develop a fault injection target instruction selector based on instruction type, develop a fault injection target register selector based on destination or source register index.
5. made changes on the lib files according to the new interface
6. did one test on the min application.

What needs to be done in the future:
1. modify the script to use the new interface to run the whole fault injection
2. test the framework on more applications
3. add other fault injection target instruction and register selectors
4. other TODOs in the committed files.
renamed profiling and faultinjection to profilingpass and faultinjectionpass
Update the description for cl::opt and add default values
Change the controller to singleton class, and implement the the mechanism to enable to include backward/forward trace of the specified instructions as fault injection target,etc.
Add a log file option to log certain information at compilation to a file
Add more pass in llfi to generate llfi index for all instructions, which is later used for fault injection and tracing
update on the preFunc() in the library

1. support for different execution cycles for different instructions
2. support for randomly selecting one of multiple fault injection register targets for one instructions
3. add Makefile in /lib to make the runtime library a standalone archive lib
bug fix according a test on min application

1. modify profiling pass to insert one call for each instruction instead of each target register of the specified instruction
2. modify the random number generator to make sure the choices are 'random'
update on the libraries files and small change on passes

1. add fi_reg_index and fi_bit as option to allow fine grained fault injection control
2. add more checks to validate the inputs from config files
3. add stuck_at_0/1 as fault type
4. clean up faultinjection_lib.c and make changes on the llvm passes to work with the updated lib interface
clean up the unnecessary include files in the passes
Develop the interface for users to add custom fault injection instruction or register selector, and provide two samples
Develop an interface for users to develop custom fault injectors, and fixed a potential bug in customselectormanager of the pass
Walk through the updated LLFI passes and libraries and make some minor fixes
Merge branch 'jshwei'

Conflicts:
	lib/profiling_lib.c -- overwrite with 'jshwei'
	src/LLFI/faultinjection/faultinjection.cpp -- deleted
	src/LLFI/profiling/profiling.cpp -- deleted
Adding first version of printProfiling Pass
Cleaning files! Added to wrong branch!
Addint first Version of printProfiling Pass
Changed printProfiler to instTrace
Removed printProfiler.cpp
moved #include's from utils.cpp to utils.h and changed '#include MetaData.h' (WRONG) to '#include Metadata.h'