function tickTextObj(ax, x, text) {
    var tf = ax.tickfont || {};

    return {
        x: x,
        dx: 0,
        dy: 0,
        text: text || '',
        fontSize: tf.size,
        font: tf.family,
        fontWeight: tf.weight,
        fontStyle: tf.style,
        fontVariant: tf.variant,
        fontTextcase: tf.textcase,
        fontLineposition: tf.lineposition,
        fontShadow: tf.shadow,
        fontColor: tf.color
    };
}
create text for a hover label on this axis, with special handling of
log axes (where negative values can't be displayed but can appear in hover text)

@param {object} ax: the axis to format text for
@param {number or array of numbers} values: calcdata value(s) to format
@param {Optional(string)} hoverformat: trace (x|y)hoverformat to override axis.hoverformat

@returns {string} `val` formatted as a string appropriate to this axis, or
    first value and second value as a range (ie '<val1> - <val2>') if the second value is provided and
    it's different from the first value.