Move HTTP request onto its own thread

This avoids blocking app progress
Fix jruby specs
Wait for thread to finish
Check everything works
Use a queue instead

This makes it easier to see what's going on, and avoid problems
with booting up infinite threads.
Factor out queue into its own class

@kyrylo will be proud of me :)
Fix memoization
Merge branch 'threaded'
v2.2.0