[mini-RFC] Name mangling in AOT

I agree that having a common prefix is helpful in the dso landscape to clearly identify function generated by tvm. To faciliate discussion, consider the following code

m = tvm.runtime.load_module("x.so")
# Option P0: require explicit query using tvm_run
run = m["tvm_run"]
# Option P1: the underlying symbol is "tvm_run" 
run = m["run"]

I believe we are still talking about P0 atm for simplicity(direct correspondence of symbol and packed func name), but allow the AOT generator to append a prefix(like @areusch 's comment of prefix starting from char 0). My main comment of backward compact is when we start to choose P1. If we go with P1, then we will need to put more thoughts into it.