Extensible client

This PR includes changes that make it possible to deal with different api_key_ids and block chains from within a single Ruby process.