Missing api

Do a better job of warning the user when they try to use an API that is not available. Previously we logged, which didn't help the user a lot if they weren't using the logging package. Now we wait until it's first used (in a main method of an API class), and we throw if the API is not available. We also delay accessing the proxy object from an event listener until there's actually a listener registered.

Additionally, there's a way for a user to check if an API is available, w/o having to call a method and check for a throw (`ChromeApi.available`).

Some additional nit cleanups.