query.js: optimize equal(), handle NaN values, document