Improving error messages in Data.Digits

When negative or zero numeric base is used, then error is throws and it
now contains name of the "user visible" function.

Still, it would be better to find a simple way how to limit base to
positive numbers greater then zero to get rid of partial functions.

Lot of SPECIALIZED pragmas for some useful (to me) numeric types.
Factoring out commonly used pattern (f .) . (. g)

It is planned to create separate module for the above.
Simple Lens for FlipT newtype

Allows simple integration with lens
(http://hackage.haskell.org/package/lens) package.
FlipT (Const s) instances

Includes FlipT (Const s) instances for:

* Functor
* Applicative
* Monad
* Comonad