updating lib to mirror change on the spec the 7/20/2013

Also moved (if possible) from non enumerable properties to weakmap for
internal properties storing.
Added component.io support