CLS support in transactions

This PR adds support for automagically passing the current transaction to all queries within the callback passed to sequelize.transaction. For example:

```js
sequelize.transaction(function (t) {
  // Normally you'd have to pass { transaction: t }, but CLS handles that automagically
  User.find(where); 

  // To disable automatic passing, pass another transaction, or null for no transaction
  User.find(where, { transaction: t2 });
  User.find(where, { transaction: null });
});
```

This is still WIP - I'd like to add docs in this PR as well

Adresses https://github.com/sequelize/sequelize/issues/2717 and 

Closes https://github.com/sequelize/sequelize/issues/1627
All sequelize instances will run on last one namespace. You could workaround this if you generate the Promise class on each Sequelize instance construction, but not sure if it is a good approach...