build: Upgrade jscs and jshint

jshint:
* Update to grunt-contrib-jshint v0.10.0 (jshint v2.5.0).
* Remove coding style option "noempty" (already covered by jscs).
* Remove coding style option "curly" (already covered by jscs).
* Remove option "regexp".
* Enable new option "freeze" (prohibits changing native prototypes).
  http://www.jshint.com/blog/new-in-jshint-oct-2013/#option-freeze
* Re-order to match http://www.jshint.com/docs/options/

jscs:
* Update to grunt-contrib-jshint v0.4.2 (jscs v1.4.0).
* Format .jscsrc file in a more spaceious way and order the
  properties less arbitrarily (using the jscs's readme order).
* Enforce more details of our coding style:
  - requireCurlyBraces: Add more keywords that should have their
    code block wrapped in curly braces.
  - requireSpaceAfterKeywords: Add more keywords that should have
    a space after them.
  - requireMultipleVarDecl: Enable the new "onevar" checker
    (like jshint's "onevar"). Introduced in jscs v1.4.0.
  - disallowTrailingComma: Enable.
  - disallowKeywordsOnNewLine: Enable for "else".
  - requireSpaceBeforeBlockStatements: Enable.
  - requireBlocksOnNewline: Enable, but only when more than 1
    statement (this still will validate shorthand like the
    following, which we make use of at the moment):

    var noop = function () { return true; };

  - requireSpacesInFunctionExpression: Remove, this is already
    covered by requireSpaceAfterKeywords and requireSpaceBeforeBlockStatements,
    which enforce:

    x.noop = function () {};
    x.Foo = function Foo() {};

  - disallowSpacesInNamedFunctionExpression: Enable for the parenthesis.
    Disallows:

    x.Foo = function Foo () {};

  - disallowSpacesInFunctionDeclaration: Enable for parenthesis.
    Disallows:

    function noop () {}

  - disallowDanglingUnderscores: Enable (like jshint's "nomen").
  - disallowSpaceAfterPrefixUnaryOperators: Add "!" back, now that the
    bug where it conflicts with requireRightStickedOperators is fixed.
    https://github.com/mdevils/node-jscs/issues/87
  - disallowMixedSpacesAndTabs: Enable.
  - disallowYodaConditions: Enable.
  - disallowRightStickedOperators: Remove, this is obsolete with
    requireSpace{Before,After}BinaryOperators and fixes a bug
    where the following would be considered invalid when it shouldn't:

    +!!constructor.static.matchFunction
    // Operator + should not stick to following expression

    This is a false positive due to the tricky nature of
    disallowRightStickedOperators and for that reason this rule
    has been deprecated and scheduled for removal in jscs 2.0.0

See also If46b94ce18a7084cf and Ib731f11b1184d in oojs/core.

Change-Id: Iccf3b461b8d01023dd698771183b0ad5816993b1