Tagging dialog (rebased onto develop)



This is the same as gh-2339 but rebased onto develop.

----

To test the PR:

Login in as ```user-5```
* Select ```project-castor``` tagged with ```TagByUser3``` (link owner ```user-3```) and ``TagByUser5``` (link owner ```user-5```)
* Click on the button to bring the tagging dialog.
   * ```TagByUser3``` should appear under "Available" List
   * ```TagByUser5``` should appear under "Selected" List
* Select a tag and click add (>), check that the tag is added to the "Selected" area
* Select a Tag Set. Click add (>). All the tags in the tag set should be added to the "Selected" area
* Go to the selected area. Select a tag (contained in a tag set) and click remove (<). The tag should be displayed under the tag set in the available area

* Check the tooltip of the tag. The tag set should be displayed in the tooltip if the tag is in a tag set. The owner of the tag should always be displayed.

* Add/Remove All
  * Click on Add All button. Check that only tags are added to the selected area. No empty tag set.
  * click on remove all Button. check that all tags are moved back.

* Add new tag:
 * Create a new tag (with new name). Click add. The tag should be added to the "Selected" area.
 * Create a new tag, using an existing tag name, or an existing tag name and description from the "Available List". A warning dialog should pop up.
    * Click Yes, if the existing tag is displayed on the "Available" list. The tag will be moved to the "Selected" section
   * Click no a new tag will be added to the "Selected" section
 * Create a new Tag using an existing tag name, or an existing tag name and description (rom the "Selected" List. A warning dialog indicating that such tag exists and is selected should pop up.
    * Select for tag name, the name of tag in a tag set e.g. ```ACA``` and a tag not in a tag set e.g. ```Petr1```.

* Filtering:
  * Check that only tags are filtered. Tag set values should not be taken into account.
  * The filtering default option should be "anywhere in the tag", i.e. any character in the tag is used.
  * Switch to "Start of tag". Filter by the start of the tag only (similar to code completion)
  * Enter some text you can find in the middle of tags e.g. ```ph``` in filtering box, with "anywhere in the tag" selected.
  * now switch to "start of Tag", the list should be updated.
  * Filter by owner: Default should be "all"
  * Select "Owned by Me", the list should be updated even if there is no text in filter box.
  * Select "Owned by Others", the list should be updated even if there is no text in filter box.

* Filter and Add new Tag
  * Filter the tags. 
  * Enter the name of a tag no longer displayed in the "Available" List.
  * The dialog indicating that the tag exists should pop up. Click "Yes". The tag should be added to the "Selected List"


Corresponding Web PR gh-2337