Add toggle case action to inline color editor

For #9519.

### Features ###
* Preserves case between value conversions and slider changes
* Related code updated to be case-insensitive
* New tests for conversion, with all existing tests passing
* Also made some minor code style fixes

This code is rather confusing (as already documented), so it was a bit of a challenge to get this written up. I once spent 30 digging around in various places for a one-line fix.

Now for the issues present here:
* This requires an update to [TinyColor v1.1.0+](https://github.com/bgrins/TinyColor/releases/tag/1.1.0), included with this PR. The creator refactored the library quite a bit since the v0.9.10 version currently used. TinyColor also unconditionally converts input to lowercase, which would make us have to keep track if the input is uppercase or not (which, in line with the previously documented issues, would be very hard because of the changing types). I have worked with Brian on the aforementioned patch to store the original input, which in turn makes this patch much easier to work out.
This method only works as described if `this._color` is a `tinycolor` object, otherwise it returns the preferred case, right?

If so, I think `_commitColor()` can be fixed (and simplifed) so `this._color` is *always* a `tinycolor` object:

```js
    ColorEditor.prototype._commitColor = function (colorVal, resetHsv) {
        var colorObj;
        if (resetHsv === undefined) {
            resetHsv = true;
        }
        this._callback(colorVal);  // should callback use tinycolor object?
        this._color = tinycolor(colorVal);

        if (resetHsv) {
            this._hsv = this._color.toHsv();
        }

        this._redoColor = null;  // if we had undone, this new value blows away the redo history
        this._synchronize();
    };
```

Which simplifies this method to:

```js
    ColorEditor.prototype.getColorString = function (color) {
        return color.getOriginalInput();
    };
```

So maybe this method is not necessary.