allow default values for parameters to contain brackets (#640)

Squashed commit of the following:

commit 5363a9850f1279c1ea5f916455899479aca71261
Author: Jeff Williams <jeffrey.l.williams@gmail.com>
Date:   Sat Nov 1 15:13:33 2014 -0700

    DRY out; delint; remove unused capture group

commit e3066068f91ba5f2c920cb5389eae15ac70f45aa
Author: Christopher D. Parks <christopher.daniel.parks@gmail.com>
Date:   Fri Apr 25 16:32:20 2014 -0700

    Add missing semi-colon caught by eslint

commit 7bd864eecba67df99bae7b338685bf6cf31e2516
Author: Christopher D. Parks <christopher.daniel.parks@gmail.com>
Date:   Fri Apr 25 16:14:12 2014 -0700

    Adding tests for fix #640

    Without the fix, we get the following when running ./jsdoc -T
        Failures:

        jsdoc/name splitName

          1) should allow default values to have brackets
          Message:
            Expected '[path=["home",' to be '[path=["home", "user"]]'.
          Stacktrace:
            undefined

          2) should allow default values to have brackets
          Message:
            Expected '"user"]] - Path split into components' to be 'Path split into components'.
          Stacktrace:
            undefined

          3) should allow default values to have brackets inside strings
          Message:
            Expected '[path=["Unmatched' to be '[path=["Unmatched begin: ["]]'.
          Stacktrace:
            undefined

          4) should allow default values to have brackets inside strings
          Message:
            Expected 'begin: ["]] - Path split into components' to be 'Path split into components'.
          Stacktrace:
            undefined

        Finished in 5.704 seconds
        870 tests, 2331 assertions, 4 failures

    These tests pass with the fix

commit 531b13893dc2c715e5cb988fdb872897547e6375
Author: Christopher D. Parks <christopher.daniel.parks@gmail.com>
Date:   Fri Apr 25 15:59:47 2014 -0700

    Fix for #640 - Allow default values for parameters to contain brackets

    Because JSDoc uses brackets to delimit default values inside the @param tag,
    default values containing brackets can get misparsed. We solve this by
    redefining splitName() in terms of splitNameMatchingBrackets() which tries
    to find the matching end bracket if the name starts with an open bracket.
    Ignores brackets inside strings. If splitNameMatchingBrackets() fails to find
    the closing bracket, we fall back to the original regex method.