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.
Merge pull request #2910 from mroth/integerdigits

Introduce an efficient implementation for Integer.digits/1