Add Grid multinote UI functionality
Merge branch 'master' of https://github.com/AlexHolt/toneblaster

Conflicts:
	src/soundModel.js
Switch to Grunt

Grunt is a powerful plugin-based build system that offers
countless advantages over the simple shell script we used
previously.
Create a Track class

In order to support multiple tracks within one
composition, the code related to a track such as
key signature, scale, size, and sequencer state is
removed to a separate module.
Toneblaster.js is a better name for the app bundle
Add a more detailed explanation
Switch to using Bower for frontend libs

Relying on browserified libraries like we did for jQuery and Underscore
or wrapping them ourselves like we did for Kinetic keeps us one step
remvoed from the latest upstream changes. By using Bower to manage these
js libraries we ensure that the latest versions are always one `bower
update` away.
Add a base class for UI elements to inherit from

UI elements in Toneblaster should all be wrapped in objects that inherit
from the Widget object. This push towards uniformity will serve us as
the interface becomes more complex.
Switch to Grunt for our build system
Change filenames to the new ones
Clean up the gradient declarations
Fix problems with ADSR math
Add a scale widget for the tray

Each track in Toneblaster has an associated scale, key, and tuning
that can each be changed independently of the other tracks in the
composition.
Update Track object to manage it's Tray

As we move closer to a PAC architectural pattern it becomes necessary to
have the Track (abstraction) update it's presentation (Tray, Panel, Grid).
Update Tuner to support generation of scales
Frontend libs are not to be included globally

The html files will now hold static refrences to js files in
the bower_components folder.
Fix multinote selection problems
Remove console.log statement

The console shall only be used for debugging. Moving forward we might
want to implement a logging system that can be toggled into debug mode
to print info to the console but to have messages always going there is
unclean.
Integrate panel with tray

Both need to become presentation objects loosely coupled with the Track.