chore(jshint): make JSHint configuration stricter

- Check for usage of undefined variables
- Add basic Jasmine globals so that spec files pass JSHint
- Ensure that angular variable can't be re-defined (set to false)

Closes #2861
fix(tests): usage of undefined variables
refactor(demo): resolve JSHint warnings

- Use $log instead of console as it's safer and always defined
- JSHint thinks usage of alert is possibly development code, so use
  $window.alert instead