Major changes

1. more atomic writes and reads - two calls vs. 3 or 4
2. search is now read locked only
3. error handling added
4. error functionality
5. addition of "exists" functionality using read locked exposed search api

All current tests pass, but more tests still to write,
along with some todos to finish