Inject dependencies to the reqquest constructor using an object rather than parameters.

  - more readable, allows some dependencies to be 'optional', simpler
  - also configure Grunt to compile all CoffeeScript files, not just named files