Add logarithmic Fibonacci numbers algorithm

Recently added fast exponentiation algorithm (#64) makes it possible to implement another method proposed in #26. The algorithm is based on matrix exponentiation and is O(log N) in time and O(1) in space.

This algorithm is somewhat superior to Binet's formula (#66), since it does not rely on double arithmetics precision. (Significantly slower though, because `fibonacci.direct` uses built-in `Math.pow`.)