Add Zotero.lazy() and use in _getConnectionAsync

I tried to describe what this function does earlier today and failed.
Hopefully the code is clearer.
Merge pull request #374 from simonster/lazy

Add Zotero.lazy() and use in _getConnectionAsync