Several dialyzer fixes.

Change `pos_integer()` to `non_neg_integer()` since `erlang:start_timer/3` accepts Time as `Time = integer() >= 0`.
Also fix 2 dialyzer complains about unmatched values.