Remove support for pre-Blink Opera

Modern versions of Opera use Blink, so are similar enouh to Chrome not to need
special treatment.

Older versions of Opera had very primitive extension support.

Removing support for older versions of Opera allows us to support more
functionality with less work.
Throw error if storage.get() has no callback, ignore it in ...set() and ...remove()

The existing behaviour is very confusing to a newbie, as console.log() doesn't
usually go anywhere useful, so you just see a function return without doing
what you expect.

Throwing an error is more useful for get(), because callbacks are really
required there.

Inserting a no-op callback is more useful for set() and remove(), where you
usually don't care.
Add BabelExt.utils.escapeHTML
Version bump to 2.7.1

The Chrome version built incorrectly before - bumping version number so clients are updated
Work around an issue caused by the recent failed Chrome rollout
Add BabelExt.utils.runInEmbeddedPage
Add BabelExt.utis.params
Add BabelExt.utils.dispatch
Import chrome-bootstrap

This library allows us to style Chrome settings like native settings
Add support for browser preferences
Correct a couple of line lengths in README.md
Support match_domain in Safari, support domain patterns everywhere

The latter is supported by all browsers now old Opera is gone
Fix typos in local_settings.json.example
Changes to browser-specific files based on recent build changes
Better error-handling in bin/build.js
Add stub support for building Safari packages
Remove dangling symlinks when building Firefox packages
Move console.log support into BabelExt.js

The development benefit is much higher than the cost
Always replace hardlinked files

Switching branches breaks hardlinks, which we have no better way to detect
Validate version strings in bin/build.js