Buggy Arr::map()

Arr::map() doesn't work well in those two cases:

1. Passing class functions (`array('class_name', 'function_name')`) or object methods (`array($object, 'method_name'`) is considered an array of callbacks, so 'class_name' and 'function_name' are considered two separate callbacks.
  I added an `!is_callbale()` check for those cases to make it work well. However, its not perfect - if you have `foo()`, `bar()`, and a foo class with a bar function (`foo::bar()`) there's no real way of telling if `array('foo', 'bar')` means `foo()` and `bar()` or `foo::bar()`. In this fix, it'll be considered as `foo::bar()`.

2. When the value of an element is an array, its always replaced - regardless of what was passed in the `$keys`  argument. For example, `Arr::map('strtoupper', array('a'=>array('bar'), 'b' => 'qux'), array())` ignores 'qux', but changes 'bar' to 'BAR'.