add hourglass.qs.coerce() and merge(), plus tests