Here begins an experimental branch for exploring the idea of a partial index.
This check-in is able to parse a WHERE clause on a CREATE INDEX statement, but
does not actually do anythingn with that WHERE clause yet.
Resolve names in CREATE INDEX WHERE clauses and detect errors.  Disallow
expressions that contain variables, subqueries, or functions.
The expression is still not used for anything, however.
still unused.
Add logic to the query planner to only use partial indices if the WHERE clause
constrains the search to rows covered by the partial index.  This is just
infrastructure.  The key routine, sqlite3ExprImpliesExpr(), is currently a
no-op so that partial indices will never be used.
Add the logic to keep partial indices up to date through DML statements and
when new partial indices are created.  This new logic is untested except to
verify that it does not interfere with full indices.
Test cases and bug fixes for the partial index logic.
Fix the ANALYZE command to work with partial indices.
Refactor internal function name sqlite3VdbeGetValue() to
sqlite3VdbeGetBoundValue().
Fill out an initial implementation of the sqlite3ExprImpliesExpr() function.
More test cases and corresponding bug fixes.
Fix bug in the logic that determines the end of a CREATE INDEX statement.
Added a VACUUM test case that exposed the bug.
Fix typos in documentation for SQLITE_DBSTATUS_DEFERRED_FKS .  
No changes to code.
Silently ignore database name qualifiers in CHECK constraints and in
partial index WHERE clauses.
Add support for partial indices.
Add NEVER() and ALWAYS() macros on some unreachable yet prudent branches.
Updates to requirements marks.  No code changes.