A full batch of fixes for Darwin

We are planning on using this inside of Yeti and I ran across a few issues when implementing some things.

This batch of fixes contains:

* Look up Darwin apps with their BundleId instead of App name
* Support Multiple versions of Firefox
* Standardized a few of the calls under the hood.
* Recover properly if a browser is not installed.

I also added a new example: `examples/detect.js`
It simply prints the available browsers on the system.

_I'll probably have another PR soon to deal with the internal cache to give a way to flush it_