Removed the initializer stuff. As Steffen mentioned it can done by the caller code
Going back to use code refs instead of strings for the serializers.

I thought strings instead of code refs would give us a performance
boost, but it happens that it is completely negligible and I don't
like the idea of expecting code strings from subclasses or users
of the module. With code refs errors are caught on compile time.

Benchmark between the 2 versions:

    $ perl -Ilib benchmark.pl
    * object construction
              Rate  string coderef
    string  1936/s      --     -3%
    coderef 1998/s      3%      --
    * deserialize empty hash
                Rate coderef  string
    coderef 340787/s      --     -7%
    string  368223/s      8%      --
    * deserialize huge event
              Rate coderef  string
    coderef 8587/s      --     -1%
    string  8654/s      1%      --
    * serialize empty hash
                Rate coderef  string
    coderef 333041/s      --     -6%
    string  356013/s      7%      --
    * serialize huge event
               Rate  string coderef
    string  19634/s      --     -1%
    coderef 19829/s      1%      --

There's a very small impact with very small datastructers
(empty string in this example), but almost no difference with
bigger ones.
Added docs and tests to the custom format feature and refactored a bit the class attributes
Updated the dependencies
Ups, forgot to add the extra test
Merge pull request #3 from joalves/master

Added docs and tests to the custom format feature and refactored a bit the class attributes