*
@method tap(<obj>, <fn>)
@returns Object
@short Runs <fn> and returns <obj>.
@extra  A string can also be used as a shortcut to a method. This method is used to run an intermediary function in the middle of method chaining. As a standalone method on the Object class it doesn't have too much use. The power of %tap% comes when using extended objects or modifying the Object prototype with Object.extend().
@example

Object.extend();
[2,4,6].map(Math.exp).tap(function(arr) {
arr.pop()
});
[2,4,6].map(Math.exp).tap('pop').map(Math.round); ->  [7,55]

*
function(obj, arg) {
      var fn = arg;
      if(!isFunction(arg)) {
        fn = function() {
          if(arg) obj[arg]();
        }
      }
      fn.call(obj, obj);
      return obj;
    }