Support several columns for unique indices.

You can now declare unique indices like so:

var User = sequelize.define('User', {
	username: {
		type: DataTypes.STRING,
		unique: {
			name: 'username_and_email',
			msg: 'Your username and email must be unique!'
		}
	},
	email: {
		type: DataTypes.STRING,
		unique: 'username_and_email'
	},
	aCol: {
		type: DataTypes.STRING,
		unique: true
	}
})

Will create two unique indices one for username/email combo and the
other for aCol. If a unique constraint occurs for aCol, the old behavior
still occurs (emits a dialect returned error), but for username/email
index the returned error would be, "Your username and email must be
unique!"
Merge branch 'master' into newindex

Conflicts:
	lib/dialects/sqlite/query-generator.js
Fixed tests.
allow setImmediate and clearImmediate as globals
rework setImmediate
Implement .spread in custom event emitter
Pesky semicolons
Merge pull request #1277 from janmeier/promiseSpread

Implement .spread in custom event emitter
Update changelog.md
test bad db connection details throws error
Optional array argument of table names to skip

dropAllTables now accepts optional array argument of tables names
to skip dropping these tables

implementation for sequelize/sequelize#1270
dropAllTables now accepts an options object

If this object contains a propert called `skip` that is an array,
then all table names in this array wont be dropped
use triple equals
Merge pull request #1280 from bulkan/feature/skip_tables_dropAllTables

Optional array argument of table names to skip
Update changelog.md
Merge branch 'test_bad_db_conn_failure' of https://github.com/overlookmotel/sequelize into overlookmotel-test_bad_db_conn_failure
Better mysql error handling
Handle all cases
Remove unneeded code
Update changelog.md