fix(tagDefinitions): throw error if tag definitions are missing from the config
test(jasmine): use custom compare rather than custom matcher
feat(defaultTagTransforms): a set of transforms to apply to every tag
refact(extract-tags processor): rename and use tagExtractor
refact(tagExtractor): major reworking to use 'transformFns'

The tag extractor now uses transform functions much more to specify how
to extract values from tags.  So instead of specialized properties such
as `canHaveName`, which was originally taken from the jsdoc approach,
you now just specify an `extract-name` transform on your tagDef to tell
the tag extractor to pull out the name from the content.

For example to trim any excess whitespace you could use this transform
function:

```
module.exports = function(doc, tag, value) {
  return value.trim();
};
```

Then in your tag definition you would put:

```
{
  name: 'my-tag',
  transforms: require('trim-whitespace')
}
```

These transforms act in a pipeline with each one working on the result
of the previous and they all have access to the current `doc` and `tag`
so that you can make changes there too.

See
https://github.com/angular/dgeni-packages/tree/master/jsdoc/tag-defs/transforms
folder for some transforms that come with the jsdoc package.

BREAKING CHANGE:

Almost all your own tag definitions are going to need to change, if you
use `canHaveName`, `canHaveType` or are providing a custom transform.
test(jasmine): revert using custom equality tester
test(partial-names): fix matching against bare objects
test(link inline tag): fix matching thrown error
test(inline-tags processor): fix for new Jasmine syntax
chore(tag-parser spec): remove unused file
fix(extract-name transform): ensure tag.description gets updated
fix(extract-type transform): ensure tag.description gets updated
fix(tagExtractor): accidental global vars
refact(jsdoc/tag-defs): use new tagExtractor syntax
refact(ngdoc/tag-defs): use new tagExtractor syntax
fix(jsdoc): tag-extractor processor was renamed