added implementation types
mac fixed to work with implementation types
mac now uses the pure source abstraction
MAC class now exported
Raaz Hash and Mac modified with the changed implementation interface
Sha implementations corrected
fixed tests to work with the new implementations
fixed raaz-executables to work with the new implementations
Merge multi-implementation fixed #41 and #44

1. One can define multiple implementations of the same primitive

2. There is a recomended implementation which should hopefully be the
   best implementation to use w.r.t speed or security or both.

3. User can use explicit implementations overiding the one selected as
   the recomended implementation.