Explain the use of Go's type-level programming and type-level computation in Go?