Give each datastore its own NotFound exception

Relying on KeyError made it difficult to distinguish between error
sources further up the stack.