Added optional tagDisplayKey option and fixes for IE 8 and 9

Here are the changes discussed in eranhirs/jsTag#13
Sure. It's actually only useful in an IE 8 whose Array prototype has been shimmed with ES5 features, but is generally good practice in loops like these.

IE 8's JS engine conforms to the ECMAScript 3rd edition standard. This means that useful functions like `map` and `forEach` are not available on the `Array.prototype`. One method that's commonly used to work around this is [shimming](https://github.com/es-shims/es5-shim), a process which monkey-patches these missing methods onto the prototype.

Unfortunately this means that these properties become enumerable because the internal property that makes them not enumerable is [not writable in scripts](https://developer.mozilla.org/en/docs/ECMAScript_DontEnum_attribute).  Because `for...in` loops loop over inherited properties the shimmed methods are enumerable. The `hasOwnProperty` guard in the fix above ensures that the key is a property of the object and not of a parent prototype.

Better methods of getting the keys (like `Object.keys`) only return enumerable properties in the child object itself. So alternatively a better way to do it would be:
```js
for (var key in Object.keys(values)) {
    // ... no extra code needed in this block ...
}
```

So in short: it's not a problem in IE 8 itself. But most people use a shim to add missing methods to a prototype, which evaluate to undefined value mappings in this loop (you see around 10 tags being added, 9 of which show as undefined, when a break code is hit).

Try this fiddle in both IE 8 and a modern ES5 browser: http://jsfiddle.net/650cbdh7/