Extend template's basic math functions to accept float, uint and string values

I extended template's math functions add, sub, mul and div to accept float and uint arguments in addition to int to solve the issue #499. The add function also can be used with string arguments. They return an error if they are passed the other type arguments or it is division by 0.

This implementation has a long boring swiches because of Go's type restriction. I'm happy if you have a good idea to make it more compact.