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, and custom labeling (with optional no-label) for new tags.  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).

#### Usage

1. `tagging` - this attribute accepts an optional string which is a scope function.  That function will be passed a string from the select input and return the transformed result will be injected into `ctrl.items` (available for selection). e.g. `<ui-select multiple tagging="tagTransform">`
2. `taggingTokens` - accepts a string that will be listened for in `keyup`, this keyboard character auto-tokenizes the current value and selects it.  **Multiple** tokens are supported by separating characters with `|`'s.  **SPACE** is a special case since whitespace characters are ignored in input fields by jQuery, as a result, `tagging-tokens=" "` fails to eval to whitespace, so the special key value `SPACE` is used instead.  e.g `<ui-select multiple tagging tagging-tokens="SPACE|,|/">` would listen for space, comma, and forward slash.
3. `taggingLabel` - (`false`|`string`) accepts an optional string for the label appended to tags in the dropdown (defaults to `(new)` if empty or undeclared.  If the string `false` is declared it will omit the injected helper (`{string} (new)`) value from the dropdown and tagging will trigger via tokenization shortcuts or `ENTER` key.  
That's not what I'm talking about. I'm talking more about like doing CharCode from string, store the value, and your comparison becomes  `if ( triggerCode === e.keyCode )`. I also don't get why there needs to be multiple triggers.

Also, you might want to use a do while for performance if you DO keep multiple tokens.

```js
var length = tokens.length;
while (length--) {
  tokens[length]
}
```