deep hash code for byte[] and other array in tuple
This PR is for #245 to fix the default hash code for byte[] and other array in tuple.
Made a few comments on the code.
Thanks @nathanmarz 's comments. The first and second is easy to fix but I am not very sure about the third.
I believe it will still box and unbox even when you use unchecked-add-int because it's wrapped in a function passed to reduce. I think it's worth trying to write that code in Java and see how the performance compares to the pure Clojure version. Alternatively, you can manually do a loop on the list – I believe Clojure will not box the bindings on the loop between iterations.