allows passing array to #update

This allows avoiding "stack level too deep" errors when dealing with
a very large number of arguments
avoids updating empty set
fixes check for #update_one and #update_many branch from #update
refs #1 adds unit tests; covers mixed array and list args
moves CHANGELOG to markdown