WIP (Backend only) Tag a series and Send notifications for tagged series

No UI work has been done, to tag a series it needs to be done within the DB directly (array of IDs).

If no tags are added to a notification then it accepts everything, if a tag is added a matching tag must exist on the series of the notification will not be sent. I also added the DB migration for Download Clients and expect it to operate the same way, allow tags to dictate which download client will download a given series.

### Possible future ###

Tags could be used for series type, add an anime tag to series and have a backend series type that takes the tag of anime treats it as such, this would eliminate a separate field for it. Languages could be controlled by tags, by having a language profile (if we support multiple languages), or a similar to series type; a mapping to a back end language for single languages, quality profiles is another contender.

Download restrictions can be linked to a series via tags: set a restriction to require "x264", assign a tag of x264 to it and assign the same tag to one or more series. Also create a tag and a restriction to require the release group "drone", assign it to one of the series that has the x264 tag. If the release contains both "x264" and the release group "drone" then grab it, otherwise reject it, restrictions could also be more complex than a single rule and linked the same way.

### Problems ###

- Tags are many to many, its entirely possible that two conflicting tags are added, which one would we use? (Conflicting as in quality profiles, language, series type)
- We'll need to be able to enforce rules to tags (make sure at one is added for series type)
- Tags aren't as explicit as defined settings (maybe we don't go the route of using tags for all the things)

Thoughts, feedback and comments please.

@Taloth @kayone 
`HashSet`, Protection against duplicates.