Bug 898666 - [clock] Clock refactor alarm object and add test

(Rebased with UI regression fix for alarm ordering.)

1. An Alarm constructor is used to create new Alarms, instead of
   creating new object literals.
2. The AlarmsDB API is changed to pass error messages in the
   function(err, value) {...} style.
3. Asyncronous API calls are checked using callbacks. The async
   functions in Utils make this easy (although including async.js
   would be easier.
4. Testing is added for the Alarm object.
5. Added mock_alarmsDB and mock_mozAlarms for testing Alarms
6. Fixed alarm_edit tests. Moved to a new alarm_edit_test.js file.
7. Add tests for new utils methods (async and safeCpuLock)
8. Rename some variables. Remove "_name" naming scheme.
9. Removed in app alarm set indicator
10. Protect id, repeat, and enabled properties on the Alarm object.

r=jugglinmike
incorporating Mike's and Rick's reviews
incorporating reviews
Merge branch 'master' of https://github.com/mozilla-b2g/gaia into 909386