feature(calendar): Add calendar factory

This add the calendar factory, to support configuration of timeFrame, dateFrame and timeFrameMapping.

This is the primary step for "#126 Global definition of non working periods", and implements draft from gist https://gist.github.com/Toilal/5871680f0e5f2fa54412.

This also adds the first unit tests, using karma, jasmine and phantomJS, integrated in grunt default task.