First take: Build minimal TPA list and includes minimal CoreCLR runtime assemblies in KRE

There are two goals to achieve in these changes:
1. Include the minimal set of runtime assemblies in the KRE package
2. Pass a string includes the minimal set of trusted platform assemblies when start CoreCLR runtime host.

The new features included in this PR:
1. New application `DependencyAnalyzer` (named `dpa`) to build both runtime minimal list and tpa list.
2. Update the klr.core45 to read tpa list from a function. The body of the function is built dynamically by `dpa` during build time.
3. Filter the assemblies in the packages to include only needed runtime assemblies.
4. Wire up above actions in `makefile.shade`

The changes in this PR are not final. Following things are not included (I'm still working on them)
1. Build the dpa to be for general usage. Therefore anyone can use the tool to build their minimal support assembly list.
2. Runtime minimal list build can be extend to the KRE CLR packages as well. 
3. Polish the codes

However, it's time to open it up for comments for the overall structure.



Add a check for null here. Also put the caching back