Refactoring plan of SILVisitor for LTO

It seems reasonable to follow the thin lto way. I talked that with @compnerd a few days ago.

And I agree that we don't need to embed the optimization within each linker. What do you think @compnerd?