Tests for jsdoc/tag.js and jsdoc/tag/*

- jsdoc/tag/validator: added tests.
- jsdoc/tag/type/closureCompilerType: added tests
- jsdoc/tag/dictionary: added tests. also:
  * BUGFIX: tags should be stored under their normalised names.                
            Only makes a difference where the tag title had capital letters -  various lookups in jsdoc/tag/dictionary would look up with the normalised name and fail because the definition was stored under the original name.
  * BUGFIX: `isNamespace` should use the normalised tag name to look up the tag. For example, if `@namespace` had synonym `@namespace2`, then `dictionary.isNamespace('namespace2')` should also be true (before it wasn't)- jsdoc/tag: added tests. also:
  * BUGFIX: when `Tag()` looks up a tag definition it should used the normalise tag title.
    Otherwise, tag properties are not looked up properly.
  * BUGFIX: if a tag has no explicit type but optional or defaultvalue is implied in the tag name (e.g. `@param [foo]`), then type parsing should report no explicit type BUT should still report the 'optional' property in `tag.value` (previously as `@param [foo]` has no type, the `optional` attribute wouldn't have been assigned).                                                               
- misc. changes to existing tests (`toEqual`->`toBe`, `Array.isArray`, `spyOn(console, 'log')` and so on)