types and parsers for epoch time and absolute DateTime

I'll add `require(-9 <= o && o <= 9)` which will throw the `IllegalArgumentException` for invalid args. but that isn't the reason for using strings here. the function I wanted was

    f(n:Long, o:Int) = n*Math.pow(10,o).toLong

this works fine if o >= 0. for o < 0, there's a problem:

    scala> (12345*0.1*0.1*0.1*0.1).toLong
    res30: Long = 1
    scala> f(12345,-4)
    res31: Long = 0

my ad hoc solution was to ignore Double and just do the multiplication by 10^o with strings, where o > 0 means pad with "0" and o < 0 means chop the last o chars off the string. then apply .toLong to the string.

do you have an explanation or better solution?