Big refactor with better dependency model

Modules don't know about each others and are orchestrated by app.js main
application file
Tests added, with mocha, native asserts and rewire