A more robust way of handling Keychain errors

An instance of `LUKeychainAccess` may be optionally given a error
handler, which can be any object that implements the
`LUTestErrorHandler` protocol. This error handler will be notified if an
error occurs.