add dtype_of

Depend on sympy assumptions for type inference rather than require
explicit mapping