Tagging support (continues #260)

@dimirc I've rebased the latest from @tvervest and @juanpasolano from #260.  I've also added auto-tokenization support at your request.  Note that javascript ignores trailing / leading whitespace characters inside data attributes so users will need to use the constant / literal `SPACE` if they want tagging with that character.  You can pass in pipes (so the only invalid character for tagging is `|`) to get multiple tag characters.  This can be seen in the tagging demo I've created in [my fork here](https://github.com/brianfeister/ui-select/blob/tagging-support/examples/demo-tagging.html).

The one outstanding to-do is the `{tagname} (Create New)` UI indicator.  It should be easy but I have to leave for the day right now so figured I would share my progress and maybe someone else can commit that, if not, I'll get it soon.
Since we are pushing our "on the fly" tags into ctrl.items, and it's possible that the tag is being transformed (via `tagging="callback"`) we need to check object equality, otherwise typing `newtag` twice will result in it appearing in the dropdown the second time even though this was done previously and we already have a matching `ctrl.items.selected` value.