I am worried about implicit parameter reordering by type checking like this.  The track calls could be one of the following:
- track( 'ga', 'customevent', {...}, {...} );
- track( {...}, {...} );
- track( 'ga', {...} );
- track( 'customevent', {...} ) <- ????? (probably doesn't work?)
- track( {...}, 'customevent' ) <- error?

As far as I know, trackingMethod should be explicit in the tracking calls.  The event name has turned into an optional parameter, so I think that should be specified in the data object.