(#1402) Fix replicate error handling on get error

Call complete callback only once
Add test for get error results
(#1392) - Add options.since to replicate
(#1408) - make sure callbacks are not inside promise try/catchs
(#1172) fix total_rows/migration for websql/idb

This commit adds several major fixes to the WebSQL
and IDB adapters:

1) total_rows now correctly returns the number of
undeleted documents, ala Couch.

2) keys/startkey/endkey/key/limit/offset logic
is now largely handled in the database for performance
(esp. WebSQL).

3) Various fixes to the above to match Couch behavior.

4) Migration logic to ensure that even if the database
schema changes, existing users can be migrated
to the new schema. Migrations have unit tests.