Added grunt for linting and building source, implement rumbleTime option and generic rumble event

To build updated source just increment the version number in package.json and run the grunt command.  If linting fails source will not build and lint errors will be thrown.  Fixed some very minor lint issues that grunt reported on first run.

rumbleTime is an option that will stop rumbling after rumbleTime has elapsed.  Helps to save on end user code.  To stay DRY the generic rumble event calls to start/stop rumble.  

I've been using an old modified version of jrumble for a while that leverages rumbleTime, decided to update the main version in case others can benefit as well.  Added grunt because it's awesome.