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 
Not sure if throwing an error is the best thing to do here?

However, if you use fn or cast, you must specify an AS for that to actually be returned to a model