Improve method lookup performance

Hello Kris, what a nice library!
This pull request consists of two commits. The first one is just a refactoring. It uses a closure called arrayMap to organize things a little better. The second is an optimization proposed by Eric Normand (http://www.lispcast.com/multimethod-js). It uses a HashMap which its hash function is JSON.stringify. I'm little concerned about the memory consumed, do you think a normal HashMap implementation would be better?
I've also updated underscore.js.