*
@method keys(<obj>, [fn])
@returns Array
@short Returns an array containing the keys in <obj>. Optionally calls [fn] for each key.
@extra This method is provided for browsers that don't support it natively, and additionally is enhanced to accept the callback [fn]. Returned keys are in no particular order. %keys% is available as an instance method on extended objects.
@example

Object.keys({ broken: 'wear' }) -> ['broken']
Object.keys({ broken: 'wear' }, function(key, value) {
// Called once for each key.
});
Object.extended({ broken: 'wear' }).keys() -> ['broken']

*
function(obj, fn) {
      var keys = object.keys(obj);
      keys.forEach(function(key) {
        fn.call(obj, key, obj[key]);
      });
      return keys;
    }