Where::constrain() should always increment `id` and make it available to operators in constructor

Currently, if we add multiple e.g. IN constraints, they both end up with the same (default) ID, hence the same bind name, and the query breaks.