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.
Merge pull request #3 from JaviSoto/patch-1

Implementing the singleton the right way
Updated to 1.3.1
Enforcing that the object is of a type that can be encoded and throwing an exception otherwise instead of failing silently.