add ability to test for dialect transaction support

Transaction support is currently very limited in the MSSQL dialect,
this allows us to conditionally skip transaction related tests for
a given dialect. I imagine it's also a nice feature to have when
adding a new dialect, so you don't have to solve all one thousand
errors at the same time
refactor(instance): .save(fields, options) -> .save(options)
feat(instance): .save (when an update) will now use an intersection of changed and attributes as fields
Merge pull request #2654 from mbroadst/transaction-support

add ability to test for dialect transaction support
fix(Model): add support for destroys on models without primary keys, fixes #2561
Merge branch 'master' of github.com:sequelize/sequelize
fix tests that i broke