BDD spec descriptions
Fix deviceInfo rejections, reformat as factory

* DeviceInfoService doesn't use a constructor, so is technically a factory
* Correct promise rejection (resolve was incorrectly used in error handler)
* Use [jasemine-as-promised][1]'s Q interface in spec for consistency

NB, if `return` is omitted within the `runs` block, the promise isn't handled
correctly.

[1]: https://github.com/ThomasBurleson/jasmine-as-promised#the-new-better-solution
Split spec into two suites with/out Cordova
Add getDeviceInfo failure test

`deviceInfoMocks` module is now a factory the churns out `window.cordova` mocks.
Each property provides a different `window.cordova.require.get` function to test
different scenarios.
Add minimal pass and fail tests
Fallback to manual email input, closes item:566

If getDeviceInfo fails to find an email, just ask the user to fill one in.
Merge pull request #367 from tlvince/bug/device-info-email-fallback

Add email fallback and device info tests