Merge pull request #56 from mafintosh/refactor

Refactoring
Remove explicit opts argument, add engine.opts
Code style
Move modules to lib/ subfolder