Improves error handling and reporting

Previously the exists? method would always return true unless something
was actually wrong causing an exception - not the case even when the
record is missing.

With this change it will return false on missing records correctly and
will log a more useful error message on failure.

I think we should probably raise the exception rather than surpress it
and return false - since this code will only hit when something is
actually wrong like wrong username/password or similar issue and not
related to the existance of the record specifically.  Will discuss.