function Router(options) {
    assert.object(options, 'options');
    assert.object(options.log, 'options.log');
    assert.optionalBool(options.onceNext, 'options.onceNext');
    assert.optionalBool(options.strictNext, 'options.strictNext');
    assert.optionalBool(
        options.ignoreTrailingSlash,
        'options.ignoreTrailingSlash'
    );

    EventEmitter.call(this);

    this.log = options.log;
    this.onceNext = !!options.onceNext;
    this.strictNext = !!options.strictNext;
    this.name = 'RestifyRouter';

    // Internals
    this._anonymousHandlerCounter = 0;
    this._registry = options.registry || new RouterRegistryRadix(options);
}
Router class handles mapping of http verbs and a regexp path,
to an array of handler functions.

@class
@public
@param  {Object} options - an options object
@param  {Bunyan} options.log - Bunyan logger instance
@param {Boolean} [options.onceNext=false] - Prevents calling next multiple
 times
@param {Boolean} [options.strictNext=false] - Throws error when next() is
 called more than once, enabled onceNext option
@param {Object} [options.registry] - route registry
@param {Boolean} [options.ignoreTrailingSlash=false] - ignore trailing slash
on paths