Used when composing a function that needs to operate on the first character found and needs to
return the original string with the modified character within it.
@see sjl.lcaseFirst or sjl.ucaseFirst (search within this file)
@param str {String} - string to search for first alpha char on
@param func {String} - function to run on first alpha char found; i.e., found[func]()
@param thisFuncsName {String} - the function name that is using this function (in order
to present a prettier error message on `TypeError`)
@throws {TypeError} - If str is not of type "String"
@returns {String} - composed string
function changeCaseOfFirstChar(str, func, thisFuncsName) {
        var search, char, right, left;

        // If typeof `str` is not of type "String" then bail
        throwTypeErrorIfNotOfType(thisFuncsName, 'str', str, _String);

        // Search for first alpha char
        search = str.search(/[a-z]/i);

        // If alpha char
        if (isNumber(search) && search > -1) {

            // Make it lower case
            char = str.substr(search, 1)[func]();

            // Get string from `char`'s index
            right = str.substr(search + 1, str.length - 1);

            // Get string upto `char`'s index
            left = search !== 0 ? str.substr(0, search) : '';

            // Concatenate original string with lower case char in it
            str = left + char + right;
        }

        return str;
    }