Migrate to bluebird

Alright! I finally did it. I had most of it done a few days ago but got stuck on some weirdness in sync.js and had just 1 elusive bug that I finally managed to squash. 

So here is the initial pull request to migrate completely off promising and to bluebird. I'm very happy with the way bluebird works. You can search for "Promise.all" in the code to check out a couple of places where I was able to refactor a hacky bit of code to use an array of promise'd functions, calling the final bit of code after all other functions were complete. 

I have not tested any of the build process yet, so this cannot be merged straight away, we'll need to inject the minified bluebird `js` into the build files. If anyone wants to do that and update the pull request that'd be great, otherwise I will try to get to it this weekend. 

Also, @skddc I think I will need to squash my commits down to size, but I'm new to that, could you send me the link to that doc you had which explained the process? 

Let me know what you guys think so far, anything to fix/redo/rip out?
references #770 

@Ragnis I'm not a huge fan of using bind(this) in the context of promises because you have to inline the bind within the various function calls, and this can lead to more difficult to read code/clutter. What do you think?