Dexie.Syncable SyncProvider API spec

Interfaces API to use when implementing a sync providers to register
with Dexie.Syncable.
Allow using Dexie.defineClass  standalone

Moved defineClass to Dexie static scope in order to be able to define a
class without being dependant on a table instance.
Also solved an issue with the updating hook where the modified obj sent
to on('updating') was tampered in the this.onsuccess callback. Solved by
cloning. Also change so that this.onsuccess will be called with the
modified object so that the hook may have both the original and the
modified object if using this.onsuccess.
Continuing the implementation of Dexie.Syncable