Changes to how sequelize.literal and cousins is escaped

This uses a modified version of the test from #1910, and closes #1875, #1915 and #1556 
All places there used isHash changed to use isPlainObject / isObject as appropriate