Fix for last{T}(t::Range{T})

* Because of automatic promotion of small integer types to
  `Int`/`Uint`, `last(t::Range)` was a different type than `start(t)`.
  This commit fixes that.