function _validateNonEmptyString(value, description, deferred) {
        var reportError = deferred ? deferred.reject : console.error;

        // http://stackoverflow.com/questions/1303646/check-whether-variable-is-number-or-string-in-javascript
        if (Object.prototype.toString.call(value) !== "[object String]") {
            reportError(description + " must be a string");
            return false;
        }
        if (value === "") {
            reportError(description + " must not be empty");
            return false;
        }
        return true;
    }
Checks whether value is a non-empty string. Reports an error otherwise.
If no deferred is passed, console.error is called.
Otherwise the deferred is rejected with the error message.
@param {*}                value         The value to validate
@param {!string}          description   A helpful identifier for value
@param {?jQuery.Deferred} deferred      A deferred to reject with the error message in case of an error
@return {boolean} True if the value is a non-empty string, false otherwise