Added a new pass, namely, amdgpu-lower-function-local-lds.
 Implemented required initial plumbing work for both old and new pass managers.
 A flag, namely, amdgpu-enable-function-local-lds-lowering is added, which is a hidden flag and enabled by default.
The pass can be explicitly disabled by passing the option -mllvm --amdgpu-enable-function-local-lds-lowering=false.
Further, build all the required data structures which will be later used to lower function local LDS. Below are the data structures being built.
 Kernel Set - Holds all the kernels in the module
 Function Local LDS Set - Holds all the function local LDS from all functions
 Function Address Taken Set - Holds all the functions whose address is taken within the module
 LDS to Function Map - Maps each function local LDS to a function within which the LDS is defined
 Function to LDS Map - Reverse of above map, which maps each functon F to a SET of LDS which are defined within F
 Kernel to Callee Map - Maps each kernel K to a SET of functions which define LDS and there exists call graph path from K to these functions.
 Kernel to LDS Map - Maps each kernel K to a set of function local LDS which are supposed to be lowered w.r.t K.
Data structures , , and  are built by iterating over the globals and functions defined within the module.
Data structures  and  are built using BOTTOM-UP based on the use list of function local LDS.
Data structure  is built using TOP-DOWN via call graph traversal.
Data structure  is built using the result of above BOTTOM-UP and TOP-DOWN constructed data structures.