function boundFn (a) {
    var l = arguments.length;
    return l
      ? l > 1
        ? fn.apply(ctx, arguments)
        : fn.call(ctx, a)
      : fn.call(ctx)
  }
Simple bind polyfill for environments that do not support it... e.g.
PhantomJS 1.x. Technically we don't need this anymore since native bind is
now more performant in most browsers, but removing it would be breaking for
code that was able to run in PhantomJS 1.x, so this must be kept for
backwards compatibility.