Store options in the synced storage.

The options are now stored in chrome.storage.sync, instead
of the localStorage of the background page.

common.js:
* Add HzOptions. No need to go hrough the background page
  with the synced storage. But it's still async.
* Add the option update messaging into HzOptions. Reduces code
  in other files. Other files just pass callbacks for updates.
* Add HzKeyCodes for two reasons:
  1. There was code in two places 'handling' keyCode to name mapping.
     One in common.js, and one in options.js. That's merged now.
  2. With synced storage there will be cases of mixed options from
     Mac and Win/Linux. If Ctrl is stored as action key in Win, then
     that's the Command key in Mac, and vice versa. HzKeyCodes deals
     with that. (Needs testing for Mac...)
* Simpliyy default options
* Add code to convert options from localStorage to the syced one

background.js
* Removed all option query/set code from background.js. That's
  covered by the synced feature.
* Remove ajax request code. That's handled by Hz.Plugin.

Rename options to Hz.options for content scripts and plugins

update-notif.html:
* Move js code to own file. It wasn't working due to content script
  security policies.

options.js:
* Replace redundant checkbox code by loops.