Structure code into seperate files

Removed the new .progress() as it was flawed. Will be fixed and added
back in a later commit
Rename the 'stats' event to 'complete'
Clean up tests
Add more tests
Add a 'request' event to the StatsEmitter

When emitted a Request object is passed along on which you can call .progress() to get an in-reuqest progress object