S4 = function() {
        return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
      }
adds an infowindow to the map controlled by layer events.
it enables interaction and overrides the layer interacivity
``fields`` array of column names
``map`` native map object, leaflet of gmaps
``layer`` cartodb layer (or sublayer)