Dead code elimination

I think it will be good if dead code elimination would be merged in master sometimes, and pull request is good option to discuss it.

Currently DCE is still in early "beta" stage, but I was able to process my project with it (I use full mscorlib and System.Core). With DCE my .js sources is more then 2 times lighter (20362 KB instead of 45914 KB)
.

I have implemented:
- generic types/methods processing
- interface methods processing
- meta attributes to mark method/field class as starting entry point for DCE
- meta attribute to mark class, that all its' method/fields/types is entry point for DCE
- meta attribute to mark class, that all its' or it derived types method/fields/types is entry point for DCE
- various bug fixes
- JSIgnore/JSExternal/JSReplacement/JSStubOnly attributes integration.

What should still be done (or not working now):
- dynamic support
- integration with JSIL proxies
- test cases
- some code should be rewritten (we should always check for Defenition in hashes of known members)
- improve DCE speed

What should be checked:
- integration with JSIL meta attributes
- why so many types from mscorib added to output, even if nothing used.

Great thanks to @BurntOfferings for initial implementation!