build: Bump grunt-contrib-jshint from 0.11.3 to 0.12.0
Taking the opportunity to modernise our .jshintrc file, I have made the
following changes there and adjusted the repo to pass:
* Replaced the deprecated `"es3": true` with `"esversion": 3`; nil change.
* Adjusted `"latedef": true` to `"latedef": "nofunc"`, a new setting for this
option that lets us retain previous behaviour. One call needed to be adjusted
for the update with this change; without it, several dozen were needed.
* Added `"futurehostile": true`, to make bumping `esversion` easier in future.
I have reviewed the rest of the options and chosen not to apply them:
* No need to over-ride the runtime option `maxerr`.
* No need to add the additional 'enforcing' options: `forin`, `nocomma`,
`nonbsp`, `notypeof`, `predef`, `shadow`, `singleGroups`, `varstmt`.
* No need to add the additional 'relaxing' options, as ideally we should use
none: `asi`, `boss`, `debug`, `elision`, `eqnull`, `evil`, `expr`,
`lastsemic`, `loopfunc`, `moz`, `noyield`, `plusplus`, `proto`, `scripturl`,
`supernew`, `validthis`, `withstmt`
* Definitely no need to add any of the deprecated coding style-related items:
`camelcase`, `curly`, `immed`, `indent`, `laxcomma`, `maxlen`,
`maxcomplexity`, `maxdepth`, `maxparams`, `maxstatements`, `newcap`,
`noempty`, `quotmark`, `sub`
Note that we retain two deprecated options, `laxbreak` and `multistr` which are
set to be removed in the next major version of jshint but are as-yet required
for the repo so that it passes.
Change-Id: I2a780f655010f2231ab2ab93c40b34943828b4df