Introduce an implementation of Integer.digits/1

Introduces an efficient (purely mathematical) implementation of
Integer.digits/1.

Most developers tend to implement the digits of an integer by converting
to a string representation, splitting the string, and then converting
each char back into an integer.  E.g. with code such as the following:

```elixir
def digits(n) when is_integer(n) and n>0 do
    n
    |> Integer.to_string
    |> String.graphemes
    |> Enum.map(&String.to_integer/1)
end
```
Which results in a lot of inefficient type conversion and memory
allocation.

This implementation is purely mathematical.  In informal benchmarks on
my workstation, it performs at 0.9 μs/op versus 4.8 μs/op in the naïve
implementation above.

While this is a pretty basic function, the way that 9/10 programmers
implement it is very inefficient and error prone.  Thus I would suggest
that having a proper and efficient implementation in the standard lib is
desirable.