Refactor fanci to use the Template Method pattern

This enables the reuse of the basic algorithm to apply a template to a
JSON structure (i.e. a JavaScript object). The two available functions
`extract` and `rename` fit perfectly into this new scheme.

This refactoring makes it possible to further extend fanci more easily.
Add gulp with JSHint and JSCS
Fix linting errors of JSHint
Use `gulp travis` as travis script
Fix JSCS style errors
Make the `rename` template consistent

The initial implementation of the `rename` template used to have the old
source keys as its keys and the new (renamed) keys as its values.

This is slighly inconstent with the intention of the template, which
defines how the new object should look like. Therefore it makes sense to
have the new keys as the actual keys of the template, and the old source
keys as its value. This is a BC-break for the sake of clarity and
consistency.
New `transform` functionality
Allow the usage of format functions
Add tests and description about format functions
Use underscore methods to be consistent
Remove duplicate test case
Merge pull request #5 from liip/transform

Refactoring & transform method