Creates an IControl object
@class

@param {Object}  [options]               - Options for the creation.
@param {String}  [options.host]          - IP Address to connect to. Default 127.0.0.1
@param {Number}  [options.port]          - Port to use. Default 443.
@param {String}  [options.user]          - User to use for auth. Default admin.
@param {String}  [options.password]      - Password to use for auth. Default admin.
@param {String}  [options.authToken]     - Auth token to use rather than user and password.
@param {String}  [options.basePath]      - Base path to prepend to paths for all requests. Default /mgmt
@param {Boolean} [options.strict]        - Whether or not to validate SSL certificates.
@param {Object}  [options.logger]        - Logger to use. Or, pass loggerOptions to get your own logger.
@param {Object}  [options.loggerOptions] - Options for the logger.
See {@link module:logger.getLogger} for details.
function IControl(options) {
    const opts = options || {};

    const logger = options ? options.logger : undefined;
    let loggerOptions = options ? options.loggerOptions : undefined;

    if (logger) {
        this.logger = logger;
    } else {
        loggerOptions = loggerOptions || { logLevel: 'none' };
        loggerOptions.module = module;
        this.logger = Logger.getLogger(loggerOptions);
    }

    // Set default options
    this.host = opts.host || '127.0.0.1';
    this.port = opts.port || 443;
    this.user = opts.user || 'admin';
    this.password = opts.password || 'admin';
    this.authToken = opts.authToken;
    this.basePath = opts.basePath || '/mgmt';
    this.strict = typeof opts.strict !== 'undefined' ? opts.strict : true;

    this.auth = `${this.user}:${this.password}`;

    this.https = https;
}