Added local reference to Math.random, changed for...in loops to Object.k...

Attempt at further optimizing the library.

# Added a local reference to the math.random library -> Reduce scope traversal
http://codeutopia.net/blog/2009/04/30/optimizing-javascript-for-extreme-performance-and-low-memory-consumption/

# Change for...in loops to Object.Keys
http://jsperf.com/object-keys-foreach-vs-for-in-v2/2

# Reduced unnecessary local variables and references

# Formatting
How about adding
console.error('socket failed with:', err);