New Watcher Object

Moved most of the Watch extension to the new Watcher object
Split Observer unit tests
Updated unit test
Allow only one listener

When assigning a function only one listener is created.
Updated documentation and minor enhancements
Improved index creation while store is loading
Added 'loadError' function
Added record revision number
Add full transaction and rollback support
Documentation
Changed _emit() to emit()
Updated Observable Ranges
Moved most functionality the Watcher object
Documentation
Added 'getListener()' method for consistency