Implementing the singleton the right way

`-defaultKeychain` was creating a new object every time, because the variable wasn't static.
It was also not thread safe, so I just used dispatch_once.