Module registration

This pull registration completely change the way modules are managed by the agent and the console. Instead of hardcoding module names, there is now a registration mechanism that relies on interfaces, anonymous imports and init() calls.