Restructure for requirejs and grunt build

Outline of work done:

* Move all app-related common files to app/ directory
* Move non-essential files out of app/ (e.g. OFL.txt)
* Use requirejs to load all JS: this reduces the number of script
  tags and makes the app structure more obvious
* Split game-specific code into a Game object
* Move gamesound into its own "class" file
* Refer to levels, level-related objects (sounds, game data)
  and their related DOM elements with a level number, rather than
  using zero-indexed arrays. This removes the need to add/subtract
  1 from the level number to enable correlation between game
  objects, DOM elements, and game levels. NB this refactoring
  isn't complete or perfect, but is heading in a more modular
  direction.
* Add a grunt build to make and deploy a wgt file. This also
  concatenates and minifies JS (using r.js) and CSS, optimises
  images, and removes unnecessary whitespace from the HTML index
  file. In addition, it provides a simple web server for
  testing, and can build a distribution suitable for use
  as a Chrome extension.
* Fix the Chrome extension manifest so the app will load correctly.
* Use bower to install and track external 3rd party library
  dependencies.
Amend htmlmin configuration so it doesn't mess up <script> tags

When htmlmin removes comments inside CDATA sections, it messes
up <script> tags; as we're minifying JS elsewhere anyway,
just leave comments in inline script elements alone.
Lazily load the majority of the HTML
Remove a couple of global variables
Small tweaks to graphics and remove unused images
Use async attribute on the script tag for our single script

We are loading a single script (in the minified/compiled/built
version of the app). Because the JS loads the HTML fragment
and then decorates it in the correct order, we can do
this asynchronously after the DOM has fully loaded.
Move to jqmobi and pull sounds into separate object
Lazy load audio