Fixed circular references in arrays/objects, strings now don't need their byte size to be calculated, and many more

This is a complete rewrite with many improvements, one of them is the ability to transmit objects/arrays with circular references.