Add Safari support - first pass.

Message passing and local storage are totally broken. But the other features
seem to be working okay. Still need to figure out message passing. And it'd
be nice to use a common codebase instead of branching to the safariext folder.